Clipper On Line • Ver Tópico - Como Gravar registro no sqlrdd ??

Como Gravar registro no sqlrdd ??

Discussão sobre SQL

Moderador: Moderadores

 

Como Gravar registro no sqlrdd ??

Mensagempor carlos moc » 17 Fev 2019 11:13

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.

*------------------------------------------------------------------------------*
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
Nota de Moderação:
Toledo: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
carlos moc
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 68
Data de registro: 16 Out 2017 15:00
Cidade/Estado: Montes Claros MG - Zap (38)99831-5319
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Como Gravar registro no sqlrdd ??

Mensagempor JoséQuintas » 17 Fev 2019 12:08

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Como Gravar registro no sqlrdd ??

Mensagempor carlos moc » 17 Fev 2019 12:29

Resolvido com : oCon:Commit()
carlos moc
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 68
Data de registro: 16 Out 2017 15:00
Cidade/Estado: Montes Claros MG - Zap (38)99831-5319
Curtiu: 0 vez
Mens.Curtidas: 1 vez




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 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