LENDO E GRAVANO O REGISTRO NO SQL NO VB6
Ola Pessoal
estou começando agora no SQL e gostaria de saber de vcs
com faço pra ler um rgistro no sql e depois gravar os dados ou icluir um novo registro
eu tenho um exemplo no BD acess
Dim Mycon2 As New ADODB.Connection
Set MyTable10 = New ADODB.Recordset
DBName = Trim(vdrive) + [Ô]\CONTABIL.mdb[Ô]
Mycon2.Mode = adModeShareExclusive
Mycon2.Open [Ô]PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] + DBName + [Ô];[Ô]
MyTable10.Open [Ô]EmpenhoPag[Ô], Mycon2, adOpenForwardOnly, adLockReadOnly, adCmdTableDirect
MyTable10.Seek Array(vexercicio, vnumero3), adSeekFirstEQ
If MyTable10.EOF Then
MyTable10.AddNew
MyTable10([Ô]exercicio[Ô]) = vexercicio
MyTable10([Ô]numero[Ô]) = vnumero3
MyTable10([Ô]tipo_auto[Ô]) = [Ô]S[Ô]
MyTable10([Ô]data_e[Ô]) = vdatae
MyTable10([Ô]valor_lanc[Ô]) = vvalord
MyTable10.Update
Else
MyTable10([Ô]valor_lanc[Ô]) = vvalord
MyTable10.Update
End If
Se alguem puder me ajudar eu agradeço
estou começando agora no SQL e gostaria de saber de vcs
com faço pra ler um rgistro no sql e depois gravar os dados ou icluir um novo registro
eu tenho um exemplo no BD acess
Dim Mycon2 As New ADODB.Connection
Set MyTable10 = New ADODB.Recordset
DBName = Trim(vdrive) + [Ô]\CONTABIL.mdb[Ô]
Mycon2.Mode = adModeShareExclusive
Mycon2.Open [Ô]PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] + DBName + [Ô];[Ô]
MyTable10.Open [Ô]EmpenhoPag[Ô], Mycon2, adOpenForwardOnly, adLockReadOnly, adCmdTableDirect
MyTable10.Seek Array(vexercicio, vnumero3), adSeekFirstEQ
If MyTable10.EOF Then
MyTable10.AddNew
MyTable10([Ô]exercicio[Ô]) = vexercicio
MyTable10([Ô]numero[Ô]) = vnumero3
MyTable10([Ô]tipo_auto[Ô]) = [Ô]S[Ô]
MyTable10([Ô]data_e[Ô]) = vdatae
MyTable10([Ô]valor_lanc[Ô]) = vvalord
MyTable10.Update
Else
MyTable10([Ô]valor_lanc[Ô]) = vvalord
MyTable10.Update
End If
Se alguem puder me ajudar eu agradeço
Jose...é a mesma coisa....a única coisa que voce tem que mudar é a Conexão com o Banco de Dados....Procura aqui no VBMania que tem...do resto o Select, MyTable, Mycon2.Open é tudo igual...só muda a conexão com o Banco...
esse é Access
Mycon2.Open [Ô]PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] + DBName + [Ô];[Ô]
no SQL é outro...
esse é Access
Mycon2.Open [Ô]PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] + DBName + [Ô];[Ô]
no SQL é outro...
JA FIZ ISSO E NAO DEU CERTO
DAR ERRO NA ABERTURA
ESTOU USANDO O SQL 2000
ME DISERAM QUE o SQL NAO USAR INDICE PRA LEITURA
DAR ERRO NA ABERTURA
ESTOU USANDO O SQL 2000
ME DISERAM QUE o SQL NAO USAR INDICE PRA LEITURA
Você tem que mudar a string de conexão...
Voce já tem as informações do sqlserver (servidor, database name, usuario e senha)?
Como assim?
Voce já tem as informações do sqlserver (servidor, database name, usuario e senha)?
Citação:JOSECPD :
JA FIZ ISSO E NAO DEU CERTO
DAR ERRO NA ABERTURA
ESTOU USANDO O SQL 2000
ME DISERAM QUE o SQL NAO USAR INDICE PRA LEITURA
Como assim?
o BANCO DE DADOS ABRE NORMAL
O PROBLEMA E A LEITURA E A GRAVACAO
O PROBLEMA E A LEITURA E A GRAVACAO
considerando que vc já tenha a conexão (vou usar a variável v_cn para conexão),
Ex. de leitura e gravação:
dim v_rs as adodb.recordset
dim v_sql as string
v_sql = [Ô]select cd_cliente, nm_cliente from cliente where cd_cliente=1[Ô]
set v_rs=v_cn.execute(v_sql)
if not v_rs.eof
[ô]se o cliente existir, entao atualiza os dados
v_sql = [Ô]update cliente set nm_cliente=[ô]novo nome do cliente[ô] where cd_cliente=1[Ô]
v_cn.execute v_sql
else
[ô]senao, inclui
v_sql = [Ô]insert into cliente (cd_cliente, nm_cliente) values (1,[ô]Nome do Cliente[ô])[Ô]
v_cn.execute v_sql
end if
v_rs.close
v_cn.close
é basicamente isso...
isso te ajuda em alguma coisa?
Ex. de leitura e gravação:
dim v_rs as adodb.recordset
dim v_sql as string
v_sql = [Ô]select cd_cliente, nm_cliente from cliente where cd_cliente=1[Ô]
set v_rs=v_cn.execute(v_sql)
if not v_rs.eof
[ô]se o cliente existir, entao atualiza os dados
v_sql = [Ô]update cliente set nm_cliente=[ô]novo nome do cliente[ô] where cd_cliente=1[Ô]
v_cn.execute v_sql
else
[ô]senao, inclui
v_sql = [Ô]insert into cliente (cd_cliente, nm_cliente) values (1,[ô]Nome do Cliente[ô])[Ô]
v_cn.execute v_sql
end if
v_rs.close
v_cn.close
é basicamente isso...
isso te ajuda em alguma coisa?
O segredo é não utilizar os métodos SEEK, FIND ou UPDATE do recordset, mas sim, instruções T-SQL (como as postadas pelo colega MARCOSLING).
Uma Forma Simples Utilize o componente Adodc1, segue o mesmo principio de cadastro do data1 para o access, só com apenas uma diferença na consulta na qual tem que acrescentar o comando .commandtype = adcmdtext. Dessa maneira.
[ô]adicionar com textBox Vinculado:
Adodc1.Recordset.addnew
[ô]salvar com textBox Vinculado:
Adodc1.Recordset.Update
Adodc1.Refresh
[ô]editar com textBox Vinculado:
Adodc1.Recordsete.edit
[ô]excluir com textBox Vinculado:
Adodc1.Recordsete.delete
[ô]não existe o controle
.CancelUpdate // pois no sqlserver há integridade no pacote de envio ao banco.
[ô]consulta
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = ([Ô]Select * from usuario where cod = 0[Ô])
Adodc1.Refresh
[ô]adicionar com textBox Vinculado:
Adodc1.Recordset.addnew
[ô]salvar com textBox Vinculado:
Adodc1.Recordset.Update
Adodc1.Refresh
[ô]editar com textBox Vinculado:
Adodc1.Recordsete.edit
[ô]excluir com textBox Vinculado:
Adodc1.Recordsete.delete
[ô]não existe o controle
.CancelUpdate // pois no sqlserver há integridade no pacote de envio ao banco.
[ô]consulta
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = ([Ô]Select * from usuario where cod = 0[Ô])
Adodc1.Refresh
Tópico encerrado , respostas não são mais permitidas