LENDO E GRAVANO O REGISTRO NO SQL NO VB6

JOSECPD 08/01/2010 16:08:47
#331437
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
F001E 08/01/2010 16:48:27
#331440
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...
JOSECPD 08/01/2010 17:05:12
#331442
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
MARCOSLING 08/01/2010 17:31:03
#331444
Você tem que mudar a string de conexão...
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?
JOSECPD 08/01/2010 18:39:09
#331446
o BANCO DE DADOS ABRE NORMAL
O PROBLEMA E A LEITURA E A GRAVACAO
MARCOSLING 08/01/2010 18:53:27
#331447
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?


TECLA 08/01/2010 20:46:44
#331450
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).
RICARDO.RAPA 09/01/2010 20:07:59
#331472
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
Tópico encerrado , respostas não são mais permitidas