Como Gravar registro no sqlrdd ??

Forum sobre SQL.

Moderador: Moderadores

carlos moc
Usuário Nível 2
Usuário Nível 2
Mensagens: 68
Registrado em: 16 Out 2017 16:00
Localização: Montes Claros MG - Zap (38)99831-5319

Como Gravar registro no sqlrdd ??

Mensagem por carlos moc »

Bom dia, estou migrando da sqllib do vailton pro sqlrdd, so estou com problema na inclusao, tenho que sair do sistema pra ele gravar o registro no BD.
existe algum comando pra forçar a gravação ?

Desde ja agradeço a ajuda.

Código: Selecionar todos

*------------------------------------------------------------------------------*
Function QueryH( cSql, aParamSql,cDbf, cAlias, nConnection, lMens, lParser,lVetor )
*------------------------------------------------------------------------------*

   Local aRetSql, hLine, aRetSqlH
   Local cInstrucao, nAcao
   Local nContLin, nContCol
   Local c       := 0 
   Local i       := 0
   Local cNew    := ""
   Local aVet    := {}
   Local nErr    := 0
   LOcal nPosErr := 0
   Local oCon
   Local nPos,oErr,cMsg
   Local lConnectByQuery := .F.
   Local aPcode
   
   if lVetor = NIL
      lVetor := .F.
   Endif 
   
   if aParamSql = NIL
      aParamSql:={}
   Endif 
   if nConnection = NIL
      nConnection := 0
   Endif 
   
   If lMens = NIL
      lMens := .t.
   Endif 
   
   If lParser = NIL
    lParser:= .F.
   Endif
   If cDbf == Nil
      aVet := {}
   Else
      If cAlias == Nil
         cAlias := cDbf
      EndIf
   EndIF
        
   If Type( 'osql'+If( nConnection == 0, '', Str(nConnection,1) ) ) <> "O"
      ConnectDataBase( nConnection )
      lConnectByQuery := .T.
   EndIf  
   
   If nConnection == 0
      oCon := oSql
   Else
      oCon := &( "oSql"+Str(nConnection,1) )
   EndIf   
     
   cInstrucao := Upper(SubStr(AllTrim(cSql),1,6))

   
   && Implementacao do Parse
   If lParser
     cSql := Sr_SqlCodeGen( Sr_SqlParse( cSql ), aParamSql )
     
   Else  
     cSql := STRTRAN( cSql, "??", "?" )
     
     For EACH c in cSql
       if c == "?"
         cNew += SR_cDBValue( aParamSql[++i] )
       Else
         cNew += c 
       EndIf
     Next
     cSql := cNew
   EndIf 
         
   Do Case 
      Case cInstrucao = "DELETE" 
           nAcao := 1
      Case cInstrucao = "UPDATE" 
           nAcao := 2
      Case cInstrucao = "INSERT" 
           nAcao := 3
      Case cInstrucao = "CREATE" 
           nAcao := 4
      Otherwise                  
           nAcao := 0
   EndCase

   &&  Retornar um arrey multidimensional 
   If lVetor
   
      
      aVet := {}
      If nConnection == 0
         oCon := oSql
      Else
         oCon := &( "oSql"+Str(nConnection,1) )
      EndIf
      
      Try
         oCon:Exec( cSql, .t., .t., @aVet, cDbf, cAlias )
      Catch oErr
         Err := oErr
        lErroRepoe := .t.
        msgstop(Err)
         && Menssagem de erro 
      END
      Return aVet
   Endif 

   &&  Dbf Virtual 
   If cDbf != Nil


      aVet := {}
      If nConnection == 0
         oCon := oSql
      Else
         oCon := &( "oSql"+Str(nConnection,1) )
      EndIf   
      Try
         oCon:Exec( cSql, .t., .t., @aVet, cDbf, cAlias )
      Catch oErr
         Err := oErr
        lErroRepoe := .t.
        msgstop(Err)
         && Menssagem de erro 
      END
      Return aVet
   Endif 

   aRetSql  := {}
   aRetSqlH := {}


   Try
      Do Case
         Case nAcao = 1 && DELETE
             oCon:Exec( cSql , .t. , .F. )
         Case nAcao = 2 && UPDATE
             oCon:Exec( cSql , .t. , .F. )
         Case nAcao = 3 && INSERT
             oCon:Exec( cSql , .t. , .F. )
         Case nAcao = 4 && CREATE
             oCon:Exec( cSql , .t. , .F. )
         Otherwise      && SELECT
             
             oCon:Exec( cSql , .t. , .t. , @aRetSql )
             
             For nContLin := 1 to Len(aRetSql)
                 hLine := Hash()
                 For nContCol := 1 to Len(oCon:aFields)
                    hSet( hLine , Upper( AllTrim( oCon:aFields[nContCol,1] ) ) , aRetSql[nContLin,nContCol] )
                 Next
                 hSetCaseMatch( hLine , .F. )
                 aAdd( aRetSqlH , hLine )
              Next
              
      EndCase
   Catch oErr
      Err := oErr 
        lErroRepoe := .t.
      msgstop(Err)
      && Menssagem de erro 
   END
   
Return aRetSqlH
Editado pela última vez por Toledo em 17 Fev 2019 11:18, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como Gravar registro no sqlrdd ??

Mensagem por JoséQuintas »

SQL é.... SQL.
Acho que o problema não está na consulta ou ter que sair do aplicativo.

Considere o uso do SQL/MySQL como usando arquivos temporários.
Abriu, pesquisou, trouxe registros... está usando um temporário.
Incluiu alguma coisa.... o temporário não tem essa inclusão.
Só um novo SELECT pra trazer essa inclusão.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
carlos moc
Usuário Nível 2
Usuário Nível 2
Mensagens: 68
Registrado em: 16 Out 2017 16:00
Localização: Montes Claros MG - Zap (38)99831-5319

Como Gravar registro no sqlrdd ??

Mensagem por carlos moc »

Resolvido com : oCon:Commit()
Responder