PESQUISA
Opa.. bom eu fiz um db com relacionamento entre varias tabelas e queria saber como faço para usa-las no vb usando adodc.
se alguem puder ajudar...
se alguem puder ajudar...
ado2.recordsource = "Select * from tabela2 where nomedocampo = " & ado1.recordset(numerodocamporelacionado)
ado2.refresh
ou seja o ado2 tem a tabela2 e digamos que o relacionamento esta com o primeiro campo da tabela1 com o segundo campo desta tabela2 então a consulta ficaria assim
ado2.recordsource = "Select * from tabela2 where campo2 = " & ado1.recordset(0)
ado2.refresh
ou seja selecione tudo da tabela2 cujo campo2 seja igual ao campo1 da tabela1
o zero é porque o numero que identifica os campos começa pelo zero e não pelo um logo se for outro campo substitua o zero pelo numero correspondente na sua tabela levando em conta é claro que o primeiro é zero o segundo é um e assim por diante
devo lembrar que esta é uma que leva em conta que o ado1 ja esteja aberto e no registro no qual se deseja selecionar para fazer com o ado1 fechado então valor de pesquisa seria passdo pelo usuario então o valor estaria numa textbox logo a pesquisa ficaria assim:
ado2.recordsource = "Select * from tabela2 where campo2 = " & textpesquisa.text
ado2.refresh
para cadastrar um novo item na tabela2 relacionada na tabela1 você precisa passar o valor do relacionamento para a tabela2 que esta na tabela1 então antes do update ficaria assim
ado2.recordset(1) = ado1.recordset(0)
ado2.update
ou seja, o campo relacionado na tabela2 campo 2(porque o campo é dois mas a contagem é do zero logo campo2 é igual a um) ficara igual ao campo 1 da tabela1
e do mesmo jeito que na consulta se o ado1 nao estiver aberto o parametro vira de uma textbox então apenas substitua
ado2.recordset(1) = text1.text
ado2.update
ado2.refresh
ou seja o ado2 tem a tabela2 e digamos que o relacionamento esta com o primeiro campo da tabela1 com o segundo campo desta tabela2 então a consulta ficaria assim
ado2.recordsource = "Select * from tabela2 where campo2 = " & ado1.recordset(0)
ado2.refresh
ou seja selecione tudo da tabela2 cujo campo2 seja igual ao campo1 da tabela1
o zero é porque o numero que identifica os campos começa pelo zero e não pelo um logo se for outro campo substitua o zero pelo numero correspondente na sua tabela levando em conta é claro que o primeiro é zero o segundo é um e assim por diante
devo lembrar que esta é uma que leva em conta que o ado1 ja esteja aberto e no registro no qual se deseja selecionar para fazer com o ado1 fechado então valor de pesquisa seria passdo pelo usuario então o valor estaria numa textbox logo a pesquisa ficaria assim:
ado2.recordsource = "Select * from tabela2 where campo2 = " & textpesquisa.text
ado2.refresh
para cadastrar um novo item na tabela2 relacionada na tabela1 você precisa passar o valor do relacionamento para a tabela2 que esta na tabela1 então antes do update ficaria assim
ado2.recordset(1) = ado1.recordset(0)
ado2.update
ou seja, o campo relacionado na tabela2 campo 2(porque o campo é dois mas a contagem é do zero logo campo2 é igual a um) ficara igual ao campo 1 da tabela1
e do mesmo jeito que na consulta se o ado1 nao estiver aberto o parametro vira de uma textbox então apenas substitua
ado2.recordset(1) = text1.text
ado2.update
Aew.... bom isso ja eh uma boa ajuda do nda que eu sei... ehehehe
ja da pra começar alguma coisa.
vo dexa aki em aberto pra ve se consigo fze alguma coisa
vlw Wiliam
ja da pra começar alguma coisa.
vo dexa aki em aberto pra ve se consigo fze alguma coisa
vlw Wiliam
Ae Wiliam... esse tutorial do moratti eh show... consegui fze um pouco doq euq ueria... mais ta dando um erro...
eu usei o datagrid relacionado a um textbox, e funciono legal, mais quando eu do um
Adodc1.Recordset.AddNew
ou eu movo pra algum registro invalido da erro de sintaxe...
o codigo qui to usando eh esse:
Tem como me da uma luz?
ehehehe
ele da erro no .refresh.
eu usei o datagrid relacionado a um textbox, e funciono legal, mais quando eu do um
Adodc1.Recordset.AddNew
ou eu movo pra algum registro invalido da erro de sintaxe...
o codigo qui to usando eh esse:
Private Sub text10_Change()
Dim strconsulta As String
strconsulta = "Select * from Produto Where IdCliente = " & Text10.Text
With Adodc2
.RecordSource = strconsulta
.Refresh
End With
With DataGrid1
.ClearFields
.ReBind
End With
End SubTem como me da uma luz?
ehehehe
ele da erro no .refresh.
quanto a pesquisa você tem que contornar o erro quando não achar nada com o critério especificado
Private Sub text10_Change()
Dim strconsulta As String
strconsulta = "Select * from Produto Where IdCliente = " & Text10.Text
With Adodc2
.RecordSource = strconsulta
.Refresh
End With
if adodc2.recordset.eof = true and adodc2.recordset.bof = true then
msgbox "Nenhum registro com o critério especificado"
adodc2.recordsource = "Select * from Produto Where IdCliente"
adodc2.refresh
end if
end sub
detalhe se o campo idCliente em sua tabela é numérico sua consulta esta correta, agora se é texto mude
adodc2.recordsource = "Select * from Produto Where IdCliente like '" & text10.text & "*'"
esta pesquisa retorna dados de acordo com as iniciais do texto de pesquisa.
Private Sub text10_Change()
Dim strconsulta As String
strconsulta = "Select * from Produto Where IdCliente = " & Text10.Text
With Adodc2
.RecordSource = strconsulta
.Refresh
End With
if adodc2.recordset.eof = true and adodc2.recordset.bof = true then
msgbox "Nenhum registro com o critério especificado"
adodc2.recordsource = "Select * from Produto Where IdCliente"
adodc2.refresh
end if
end sub
detalhe se o campo idCliente em sua tabela é numérico sua consulta esta correta, agora se é texto mude
adodc2.recordsource = "Select * from Produto Where IdCliente like '" & text10.text & "*'"
esta pesquisa retorna dados de acordo com as iniciais do texto de pesquisa.
quanto ao erro no incluir, o ideal é você postar o seu código completo de inclusão, indicar qual linha dá o erro e qual a mensagem de erro.
Ola Wiliam... Bom essa sua correçao nao ajudou por 2 motivos...
1: existem clientes que ainda nao possuem um produto especificado
2: o erro ainda ocorre quando eu faço algumas coisas, como adcionar novo cliente(adodc1), segue abaixo o codigo doAdcionar/salvar.
Adcionar:
Salvar
Bom ele da erro no refresh do text_change...
Erro de sintaxe na clausula FROM. ( da esse erro )
bom... eu to meio perdido aki...[S43]
PS: ta valendo a atençao Wilian
1: existem clientes que ainda nao possuem um produto especificado
2: o erro ainda ocorre quando eu faço algumas coisas, como adcionar novo cliente(adodc1), segue abaixo o codigo doAdcionar/salvar.
Adcionar:
Private Sub Command4_Click()
On Error Resume Next
Adodc1.Recordset.AddNew
Text2.SetFocus
Text10.Text = ""
DataGrid1.Visible = False
End SubSalvar
Private Sub Command1_Click()
On Error Resume Next
Adodc1.Recordset.MoveNext
Adodc1.Recordset.Save
Adodc1.Refresh
Adodc1.Refresh
Adodc1.Recordset.MoveLast
DataGrid1.Visible = True
End SubBom ele da erro no refresh do text_change...
Erro de sintaxe na clausula FROM. ( da esse erro )
bom... eu to meio perdido aki...[S43]
PS: ta valendo a atençao Wilian
veja após o addnew para salvar use o update e não tem como dar movenext pois você está incluindo um registro logo só ele está aparecendo.
Private Sub Command1_Click()
On Error Resume Next
Adodc1.Recordset.update
Adodc1.recordsource "Select * from tabela1"
Adodc1.Refresh
Adodc1.Refresh
DataGrid1.Visible = True
End Sub
Private Sub Command1_Click()
On Error Resume Next
Adodc1.Recordset.update
Adodc1.recordsource "Select * from tabela1"
Adodc1.Refresh
Adodc1.Refresh
DataGrid1.Visible = True
End Sub
Man, continua dando erro de sintaxe na clausula from, aih o vb marca que o
.refresh do text10_change
esse erro ocorre quando clico no command4
.refresh do text10_change
esse erro ocorre quando clico no command4
alguem pode me ajudar?
Kyanor coloque desse jeito no text10_change
Private Sub text10_Change()
Dim strconsulta As String
On error resume next
strconsulta = "Select * from Produto Where IdCliente = " & Text10.Text
With Adodc2
.RecordSource = strconsulta
.Refresh
End With
With DataGrid1
.ClearFields
.ReBind
End With
End Sub
Private Sub text10_Change()
Dim strconsulta As String
On error resume next
strconsulta = "Select * from Produto Where IdCliente = " & Text10.Text
With Adodc2
.RecordSource = strconsulta
.Refresh
End With
With DataGrid1
.ClearFields
.ReBind
End With
End Sub
Tópico encerrado , respostas não são mais permitidas