Como eu já disse, o sistema ainda mistura DBF e MySQL.
Esta é a rotina atual, usando DBF + MySQL, que agora vai ser só MySQL.
mInfAdic := "PEDIDO " + jppedido->idPedido
IF ! Empty( jpnotfis->nfLeis )
FOR nCont = 1 TO Len( Trim( jpnotfis->nfLeis ) ) STEP 7
mLei := SubStr( jpnotfis->nfLeis, nCont, 6 )
IF Val( mLei ) != 0
WITH OBJECT cnMySql
:cSql := "SELECT * FROM JPDECRETO WHERE IDDECRETO=" + mLei
:Execute()
IF ! :Eof()
mInfAdic += ";" + :String( "DEDESCR1" ) + " " + :String( "DEDESCR2" ) + " " + ;
:String( "DEDESCR3" ) + " " + :String( "DEDESCR4" ) + " " + :String( "DEDESCR5" )
mInfAdic := Trim( mInfAdic )
ENDIF
:CloseRecordset()
ENDWITH
ENDIF
NEXT
ENDIF
NFLEIS contém um "linguição", uma lista das leis.
E cada uma das leis precisa ser pesquisada.
Ainda vou fazer testes pra substituir tudo isso por um único comando SQL.
Só que tem um adicional: Na descrição das leis, o texto está dividido em até 5 linhas.
Em MySQL nem precisa disso, tá na hora de modificar, já que esse só existe no MySQL.
Também tem um detalhe adicional:
Hoje está assim: 001002003004
Se eu modificar pra assim: 001,002,003,004
Eu poderia usar essa lista no próprio comando: SELECT * FROM LEIS WHERE LEIS IN ( " + lista + " )"
7 leis x 5 linhas = 35 campos no SELECT do MySQL
Se alterar pra 1 linha, no MySQL sem problemas, 28 campos a menos no SELECT.
E se alterar a vÃrgula, usar o campo com a lista de leis no comando, sem precisar FOR/NEXT.
Vou pensar nisso.
É por isso que estou convertendo devagar, aproveitando pra facilitar.
Nota:
Aqui não se trata de necessidade do MySQL, ou de qual comando usar.... mas deixar a base de dados mais prática.
Indiretamente tem a ver com o SQL, pois transforma o que seria um comando complicado em algo simples, só por mexer na base de dados.