Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

patricia_sm

[Resolvido] VB6 com postgres via ADODB

Recommended Posts

Boa tarde.

 

Estou migrando um sistema VB6 para banco postgreSQL e já comecei com um problema.

 

Estou tentando inserir dados em uma tabela e dá um erro dizendo a mensagem:

 

"O conjunto de registros atual não oferece suporte para atualização. Isso pode ser uma limitação do servidor ou do tipo de bloqueio selecionado."

 

Eu rodo o mesmo código em outros SGBDs e funciona sem problemas, só com o postgre que dá essa mensagem e eu não sei como verificar e corrigir.

 

Eu não sei se algum problema na string de conexão, porém ele faz as pesquisas.

 

O meu código em VB6 está da seguinte forma:

 

*******************************************

Public Function inserirRegistro(sTabela As String, colCampos As Collection, colValores As Collection) As Boolean

Dim sSql As String

Dim recResult As New ADODB.Recordset

Dim lnCount As Long

 

On Error GoTo erros

 

inserirRegistro = False

 

sSql = "Select * from " & sTabela & " where 1=2"

recResult.Open sSql, Gconn, adOpenDynamic, adLockOptimistic

 

recResult.AddNew

 

For lnCount = 1 To colCampos.count

 

If Not IsNull(colValores.Item(lnCount)) And Trim(colValores.Item(lnCount)) <> "" Then

recResult.Fields(colCampos(lnCount)).value = colValores.Item(lnCount)

 

Next lnCount

 

recResult.Update

 

recResult.Close

 

Set recResult = Nothing

 

inserirRegistro = True

 

Exit Function

erros:

 

...

 

end function

 

**********

minha string de conexão é:

 

 

Public Gconn As New ADODB.Connection

 

Gconn.open "Provider=PostgreSQL.1;Password='postgres';User ID='postgres';Data Source=XXX.XXX.X.XXX;Location=BancoTeste;Extended Properties='';;"

 

 

Fico no aguardo.

 

Se alguém puder me ajudar fico agradecida.

 

Patricia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparentemente não há erros com seu código. Não há nada no código que te impeça de fazer inserts.

 

Veja se o problema não é diretamente no banco de dados, se esta com alguma restrição.

 

Tente postar na área de banco de dados, talvez alguém de lá saiba algo mais a fundo, visto que o problema não parece ser o programa.

 

Mas por via das dúvidas, tente fazer o seguinte:

 

Gconn.execute "insert into " & stabela & " values ('" & colValores.Item(lnCount) & '")" - a parte dentro do parenteses deve ter a mesma quantidade de campos que sua tabela tem.

 

Isso é só para testar. Se nem isso funfar, é porque o bloquei vem do ser servidor mesmo.

 

Depois diz no que deu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Consegui atualizar.

 

O problema era a String de Conexão mesmo.

 

Deixo aqui a String que deu certo caso alguém passe por algum problema parecido.

 

Muito obrigada.

 

Patricia.

 

 

PROVIDER=MSDASQL.1; DRIVER={PostgreSQL UNICODE}; DATABASE=BancoTeste; SERVER=XXX.XXX.X.XXX; PORT=5432; UID=postgres; PWD=postgres; ByteaAsLongVarBinary=1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.