Ir para conteúdo

Arquivado

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

gabrieldb

[Resolvido] Banco de Dados

Recommended Posts

Public Conex As ADODB.Connection

Public AccessConnect As String

 

Public Sub conexao()

Set Conex = New ADODB.Connection

AccessConnect = "Provider=PostgreSQL.1;Password=;User ID=postgres;Data Source=localhost;Location=Sistema Deluca;Extended Properties="

Conex.Open AccessConnect

End Sub

 

 

 

Deu certo com esse código ai rapaziada falta agora fazer le gravar no banco de dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, na sub do seu botão salvar faça o seguinte:

 

private sub cmdSalvar_click
dim rs as new adodb.recordset

call conexao

rs.open "select * from nome_tabela", variavel_de_conexao

rs.addnew

rs("nomedoseucampo1") = text1.text
rs("nomedoseucampo2") = text2.text
rs("nomedoseucampo3") = text3.text
'você deverá montar uma linha igual essa acima para cada campo de sua tabela, substituindo "nomedeseucampo" pelo verdadeiro nome do campo. 
'E substitua text1.text pelo nome da sua text que armazena os valores correspondetes.

rs.update

Tente fazer, veja se funciona e depois diga o resultado.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Private Sub cmdSalvar_Click()
Dim rs As New adodb.Recordset

Call conexao

rs.Open "select * from clientes", "Provider=PostgreSQL.1;Password=;User ID=postgres;Data Source=localhost;Location=Sistema Deluca;Extended Properties="

rs.AddNew

rs("nomefantasia") = txtFantasia.Text
rs("tipestab") = txtEstab.Text
rs("razaosocial") = txtRazao.Text

rs.Update
End Sub

Run-time erro '3251':

 

O conjunto de registros atual não oferece suport para atualização.

Isso pode ser uma limitação do provedor ou do tipo de bloqueio selecionado.

 

Dá esse erro e aponto pro rs.AddNew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, altere esse linha:

 

rs.Open "select * from clientes", "Provider=PostgreSQL.1;Password=;User ID=postgres;Data Source=localhost;Location=Sistema Deluca;Extended Properties="

Para essa:

rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic

Teste de novo e veja se funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Private Sub cmdSalvar_Click()
Dim rs As New ADODB.Recordset

Call conexao

rs.Open "select * from clientes", "Provider=PostgreSQL.1;Password=deluca;User ID=postgres;Data Source=localhost;Location=Sistema Deluca;Extended Properties=", adOpenDynamic, adLockOptimistic



rs.AddNew

rs("nomefantasia") = txtFantasia.Text
rs("tipestab") = txtEstab.Text
rs("razaosocial") = txtRazao.Text
rs("endereco") = txtEndereco.Text
rs("bairro") = txtBairro.Text
rs("cidade") = txtCidade.Text
rs("estado") = txtEstado.Text
rs("cep") = txtCep.Text
rs("cnpj") = txtCnpj.Text
rs("inscricaoestadual") = txtInscricao.Text
rs("ccm") = txtCcm.Text
rs("diaemissaonf") = txtDianf.Text
rs("dataimplantacao") = txtImplant.Text
rs("diavencimento") = txtVenc.Text
rs("fonee") = txtFone1.Text
rs("fone") = txtFone2.Text
rs("fax") = txtFax.Text
rs("email") = txtEmail.Text
rs("site") = txtSite.Text

rs.Update

Deu o mesmo erro no rs.addNew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não Gabriel, deixe exatamente do jeito que eu postei antes.

 

Não precisa escrever tudo isso de novo (Provider=PostgreSQL.1;Password=deluca;User ID=postgres;Data Source=localhost;Location=Sistema Deluca;Extended Properties=), deixe somente o nome da variável (Conex).

 

Para isso utilizamos variáveis, para que não seja necessário ficar escrevendo o valor inteiro o tempo todo.

 

E antes da linha

 

call conexao

Ponha:

 

Conex.cursorlocation = adUseClient

Diga se resolveu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá o seguinte erro :

Run-Time error '91':

Object variable or With block variable no set

e aponta pra essa linha o debug

Conex.cursorlocation = adUseClient

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops, tem razão, falha nossa.

 

Inverte, primeiro coloque call conexao, depois conex.cursorlocation = aduseclient.

 

A linha call conexao está chamando sua sub criada no module para abrir sua conexao com seu banco.

Nessa variável, está armazenado todos os dados que precisa para falar com o banco, por isso disse que não precisava escrever tudo de novo quando abriu seu recordset.

 

No recordset, ficam armazanados os dados de uma ou mais tabelas específicas, conforme sua query (ex.: select * from cliente).

 

Dê uma olhada nesses tópicos, podem lhe ajudar:

 

http://forum.imasters.com.br/index.php?showtopic=340188

 

http://forum.imasters.com.br/index.php?showtopic=345039

 

http://forum.imasters.com.br/index.php?showtopic=294850 (esse fala exatamente de seu problema)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cláudio mudei aki mais agora aponta outro erro...sisteminha dificil esse em...rsrs

 

Run-time error'-2147217887 (80040e21)':

Operação de várias etapas gerou erros.Verifique cada valor de status.

 

rs("nomefantasia") = txtFantasia.Text
rs("tipestab") = txtEstab.Text
rs("razaosocial") = txtRazao.Text
rs("endereco") = txtEndereco.Text
rs("bairro") = txtBairro.Text
rs("cidade") = txtCidade.Text
rs("estado") = txtEstado.Text
rs("cep") = txtCep.Text
rs("cnpj") = txtCnpj.Text
rs("inscricaoestadual") = txtInscricao.Text
rs("ccm") = txtCcm.Text
rs("diaemissaonf") = txtDianf.Text
rs("dataimplantacao") = txtImplant.Text
rs("diavencimento") = txtVenc.Text
rs("fonee") = txtFone1.Text
rs("fone") = txtFone2.Text
rs("fax") = txtFax.Text
rs("email") = txtEmail.Text
rs("site") = txtSite.Text
rs.Update
End Sub

aponta agora pra primeira linha já conferi todos os nomes e estão certos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pelo menos estamos caminhando, agora ele passou pelo addnew. Pode comemorar, rs...

 

Compare em sua tabela, o tipo de dado que cada coluna está esperando com o que está passando. Por exemplo, veja se seu campo nomefantasia realmente está aguardando um texto, e se a quantidade de caracteres que ele está aguardando não é inferiro à quantidade que está passando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pelo menos estamos caminhando, agora ele passou pelo addnew. Pode comemorar, rs...

 

Compare em sua tabela, o tipo de dado que cada coluna está esperando com o que está passando. Por exemplo, veja se seu campo nomefantasia realmente está aguardando um texto, e se a quantidade de caracteres que ele está aguardando não é inferiro à quantidade que está passando.

Então todos meus campos estão como character conferi um por um na quantidade de dados...não sei pq ta dando isso bom mais pelo menos pelo addnew passamos rsrs agora apareceu mais um...acho que esse é o maior tópico que já teve rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Gabriel. Então, pelo que achei, esse tipo de erro ocorre realmente quando há incompatibilidade na forma como os dados estão sendo passados e como estão sendo aguardados.

 

Você disse que as colunas estão esperando caracteres mesmo. Agora dê uma olhada se você não definiu para receber somente 10 caracteres e está tentando passar mais que isso.

 

PS.: Esse tópico é maior, rs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conferi tudo de novo no banco, no maxlenght tudo correto mais não vai nada mesmo erro...não sei mais o que fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso dar uma sugestão ?

 

Não pode usar INSERT ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso dar uma sugestão ?

 

Não pode usar INSERT ?

Pode ser mais como ficaria com insert ? pode ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Conexao.Execute("Insert into agenda values('1','1')")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conexao.Execute("Insert into agenda values('1','1')")
Não entendi ainda Scorpio hj eu to meio lento...como ficaria isso ai no meu código ?

 

Private Sub cmdSalvar_Click()
Dim rs As New adodb.Recordset

Call conexao

Conex.CursorLocation = adUseClient

rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic

rs.AddNew

rs("nome") = txtFantasia.Text
rs("estab") = txtEstab.Text
rs("razao") = txtRazao.Text
rs("endereco") = txtEndereco.Text
rs("bairro") = txtBairro.Text
rs("cidade") = txtCidade.Text
rs("estado") = txtEstado.Text
rs("cep") = txtCep.Text
rs("cnpj") = txtCnpj.Text
rs("inscricao") = txtInscricao.Text
rs("ccm") = txtCcm.Text
rs("diaemissaonf") = txtDianf.Text
rs("implantacao") = txtImplant.Text
rs("vencimento") = txtVenc.Text
rs("fonee") = txtFone1.Text
rs("fone") = txtFone2.Text
rs("fax") = txtFax.Text
rs("email") = txtEmail.Text
rs("site") = txtSite.Text
rs.Update
End Sub

se puder colocar ae agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Private Sub cmdSalvar_Click()
Dim rs As New adodb.Recordset

Call conexao

Conex.Execute ("insert into tabela(Nome) values('" & var_Nome & "')")

Tenta assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Private Sub cmdSalvar_Click()
Dim rs As New adodb.Recordset

Call conexao

Conex.Execute ("insert into tabela(Nome) values('" & var_Nome & "')")

Tenta assim.

 

Funcionou tá gravando normal as informações no banco. Mais me surgiu outra dúvida não sei se abro outro tópico ou por aki mesmo vocês pode me ajudar como eu faço pra criar um botão pra pesquisar, editar e excluir esses dados armazenados no banco ? Se não for pedir demais galera...

Valeu pela paciência de todos.

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.