Clipper On Line • Ver Tópico - Curiosidade: leve evolução ADO

Curiosidade: leve evolução ADO

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Curiosidade: leve evolução ADO

Mensagempor JoséQuintas » 15 Fev 2020 03:58

Com o tempo a gente vai se ajustando com o que usa.
Aqui o fonte de tempos atrás, de certa forma, herdado do DBF.
Antes o código era string com 6 dígitos, e usava último + 1

      WITH OBJECT ::cnMySql
         IF ::cOpc == "I"
            msiNumLan := ::axKeyValue[ 1 ]
            IF msiNumLan == "*NOVO*"
               msiNumLan := StrZero( 1, 6 )
               :cSql := "SELECT SINUMLAN FROM WEBSITE ORDER BY SINUMLAN DESC LIMIT 1"
               :Execute()
               IF ! :Eof()
                  msiNumLan := StrZero( Val( :String( "SINUMLAN" ) ) + 1, 6 )
               ENDIF
               :CloseRecordset()
            ENDIF
            :QueryCreate()
            :QueryAdd( "SINUMLAN", msiNumLan )
            :QueryAdd( "SITITULO", "" )
            :QueryAdd( "SITEXTO", "" )
            :QueryExecuteInsert( "WEBSITE" )
         ENDIF
         :QueryCreate()
         :QueryAdd( "SITITULO", Trim( msiTitulo ) )
         :QueryAdd( "SIDATA", msiData )
         :QueryAdd( "SITEXTO", Trim( msiTexto ) )
         :QueryAdd( "SIPRIORIDADE", msiPriori )
         :QueryAdd( "SIINFALT", LogInfo() )
         :QueryExecuteUpdate( "WEBSITE", "SINUMLAN=" + StringSql( msiNumLan ) )
      ENDWITH


Melhorou um pouco

      WITH OBJECT ::cnMySql
         :QueryCreate()
         :QueryAdd( "SITITULO", Trim( msiTitulo ) )
         :QueryAdd( "SIDATA", msiData )
         :QueryAdd( "SITEXTO", Trim( msiTexto ) )
         :QueryAdd( "SIPRIORIDADE", msiPriori )
         IF ::cOpc == "I"
            :QueryAdd( "SIINFINC", LogInfo() )
            mIdSite := :QueryExecuteInsert( "WEBSITE" )
         ELSE
            :QueryAdd( "SIINFALT", LogInfo() )
            :QueryExecuteUpdate( "WEBSITE", "IDSITE = " + NumberSql( mIdSite ) )
         ENDIF
      ENDWITH


QueryCreate() indica que vai começar a lista de campos a atualizar
QueryAdd() adiciona campo e conteúdo
Na inclusão é INSERT e na alteração é UPDATE
E na inclusão, agora é campo incremental: numera sozinho, então pego o retorno de qual código foi usado (está dentro da QueryExecuteInsert() )
Seja qual for o conector - ADO, SQLMIX, hbMySQL, etc., teria que montar o comando SQL, então, de certa forma normal.
O QueryExecuteInsert() ou QueryExecuteUpdate() criam o comando SQL baseado na lista dos campos.
Lógico... na atualização precisa do código, mas na inclusão não.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 13530
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro