********************** Início do click do botão que Indexa ********************** thisform.Recria() *** thisform.Indexar("Dados\Acoes", "i_codigo", "Codigo", .t.) thisform.Indexar("Dados\Acoes", "c_acao", "Acao", .f.) ********************** Fim do click do botão que Indexa ********************** ********************** Início do Método Recria ********************** * 1 - apaga o Banco de Dados * 2 - abre todas as tabelas com a intenção de liberá-las do banco apagado * 3 - recria o Banco de Dados * 4 - adiciona as tabelas Local laCriaBD[1], liCriaBD, lcArq *** close tables all close databases all * 1 - apaga o Banco de Dados delete file "Dados\NomeDoBanco.*" ADIR(laCriaBD, "Dados\*.DBF") *** for liCriaBD = 1 to alen(laCriaBD, 1) lcArq = AllTrim(laCriaBD(liCriaBD, 1)) lcArq = substr(lcArq, 1, len(lcArq) - 4) KEYBOARD "{D}" * 2 - abre todas as tabelas com a intenção de liberá-las do banco apagado use "Dados\" + lcArq exclusive delete tag all off Dados\&lcArq..cdx endfor && for liCriaBD = 1 to alen(laCriaBD, 1) KEYBOARD "" clear Use *** * 3 - recria o Banco de Dados * Cuidado! se, no seu banco, tiver StoredProcedures terá que utilizar o GenDBC pra recriar o banco Create DataBase "Dados\NomeDoBanco" Open DataBase "Dados\NomeDoBanco" exclusive *** for liCriaBD = 1 to alen(laCriaBD, 1) * 4 - adiciona as tabelas add table "Dados\" + AllTrim(laCriaBD(liCriaBD,1)) EndFor && for iRecriaBD = 1 to alen(aRecriaBD, 1) ********************** Fim do Método Recria ********************** ********************** Início do Método Indexar ********************** Lparameters cArquivo, cCampo, cTag, lPrim * Neste exemplo não estou preocupado com perfumaria, * mas aqui você vai querer um ProgressBar tudo, bonitinho if used("&cArquivo") sele &cArquivo endif use &cArquivo exclusive if lPrim ALTER TABLE &cArquivo ADD PRIMARY KEY &cCampo TAG &cTag else INDEX ON &cCampo TAG &cTag ADDITIVE endif ********************** Fim do Método Indexar **********************