Então....
Na continuação da migração pra MySQL, comecei a mexer em outras coisas ao mesmo tempo...
Então anulei tudo, e fazer uma coisa de cada vez.
Uma coisa é o seguinte: tenho um único cadastro pra clientes/fornecedores e transportadoras.
clientes/fornecedores usa cdtipo="1", e transportadoras usa cdtipo="3".
Vou separar as transportadoras e acabar com esse cdtipo.
Primeiro passo: confirmar índices
IndexDbf( "jpcadas", "Cadastros (Cli/Forn/Transp)" )
IndexInd( "jpcadas1", "cdTipo + cdCodigo" )
IndexInd( "jpcadas2", "cdTipo + cdNome + cdCodigo" )
IndexInd( "jpcadas3", "cdTipo + cdCnpj + cdDivisao + cdCodigo" )
IndexInd( "jpcadas4", "cdTipo + cdApelido + cdCodigo" )
IndexInd( "telefone", "cdTipo + cdTelefone + cdCodigo" )
IndexInd( "numlan", "cdCodigo" )
IndexInd( "nome", "cdNome + cdCodigo" )
IndexInd( "cnpj", "cdCnpj+cdCodigo" )
Já tenho índices com e sem o cdtipo, e já faço muito uso desses índices sem cdtipo, isso vai facilitar.
Só lembrando:
usando NTX, temos lá trocentos arquivos de índice
SET INDEX TO ntx1, ntx2, ntx3, ntx4, ntx5, ntx6, ntx7, ntx8, ntx9, ntx10, ntx11
usando CDX, é um único arquivo, e os índices são internos
SET INDEX TO jpcadas
Além disso, ao invés de SET ORDER TO 1, SET ORDER TO 2, etc...., podemos usar o nome: OrdSetFocus( "numlan" )
Com isso, vou poder apagar os índices jpcadas1 a 4 tranquilamente (após retirar o uso nos fontes, lógico).
Se usasse SET ORDER por número... isso não seria possível.
Primeiro rotina de criar/atualizar estrutura do arquivo:
STATIC FUNCTION JPTRANSPCreateDbf()
LOCAL mStruOk := { ;
{ "TPCODIGO", "C", 6 }, ;
{ "TPNOME", "C", 50 }, ;
{ "TPAPELIDO", "C", 20 }, ;
{ "TPCNPJ", "C", 18 }, ;
{ "TPENDERECO", "C", 40 }, ;
{ "TPNUMERO", "C", 10 }, ;
{ "TPCOMPL", "C", 20 }, ;
{ "TPBAIRRO", "C", 20 }, ;
{ "TPCIDADE", "C", 21 }, ;
{ "TPUF", "C", 2 }, ;
{ "TPCEP", "C", 9 }, ;
{ "TPTELEFONE", "C", 30 }, ;
{ "TPINSEST", "C", 18 }, ;
{ "TPCONTATO", "C", 30 }, ;
{ "TPTELEF2", "C", 15 }, ;
{ "TPTELEF3", "C", 15 }, ;
{ "TPFAX", "C", 30 }, ;
{ "TPEMAIL", "C", 250 }, ;
{ "TPHOMEPAGE", "C", 100 }, ;
{ "TPOBS", "C", 100 }, ;
{ "TPSTATUS", "C", 6 }, ;
{ "TPINFINC", "C", 80 }, ;
{ "TPINFALT", "C", 80 } }
SayScroll( "JPTRANSP, verificando atualizações" )
IF ! ValidaStru( "jptransp", mStruOk )
MsgStop( "jptransp não disponível!" )
QUIT
ENDIF
RETURN NIL
Depois rotina de reindexar:
IndexDbf( "jptransp", "Transportadoras" )
IndexInd( "numlan", "tpCodigo" )
IndexInd( "nome", "tpNome + tpCodigo" )
IndexInd( "cnpj", "tpCnpj + tpCodigo" )
Pronto, na próxima atualização do sistema, arquivo será criado automaticamente.