Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida com consulta


new_rayderss

Pergunta

Essa ta sinistra... :wacko: Tentei vários exemplos que vi por aí. mas não consegui adaptar para o meu projeto e pior não consegui nem entender como funciona essa estória de consulta direito, por isso estou aqui para pedir ajuda.

Bom eu estou usando um DBGrid para mostrar os resultados e um controle Data para conectar o banco de dados.

Pois bem, a busca funcionara através do código do cliente, que pode ter diversos animais. Na busca como padrão vem marcado Todos mas pode marcar o clubinho ou simples, que são relacionados aos animais. Então se marco clubinho só ira aparecer os animais que pertencem a categoria clubinho.

Bom o meu pedido de ajuda, é que como posso fazer a seleção de resultados para cada opção.

ex: Marquei Todos aí aparece o(s) animais do cliente cujo código digitei.

ex2: Marquei Clubinho aí aparece o(s) animais do cliente cujo código digitei. Sendo que só pode ser o da categoria clubinho, ou seja, caso o cliente tenha outro animal no simples esse não aparece.

ex3: Marquei Simples a mesma idéia acima só que só terão os animais da categoria simples.

Espero ter explicado direitinho e clamo pela ajuda de vocês amigos!! ^^

Amostra do formulário de busca:

consul-1.png

Editado por new_rayderss
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Eu aqui denovo com consulta :P

Bom preciso saber como posso fazer o seguinte exemplo..

tal cliente j realizou 3 serviços

24/05/2008, 25/07/2008, 10/10/2008

aí realizo a pesquisa apenas pedindo o codigo, sendo que no resultado da pesquisa só quero as informações do serviço mais recente ou seja a última realizada.

como faço isso?

Link para o comentário
Compartilhar em outros sites

  • 0

hum, acho q seria uma query mais o menos assim:

sql = "Select * From Servico Where Codigo = " & codigo & " And Data = (Select Max(Data) From Servico Where Codigo = " & codigo & ")"

mas não sei se vai funcionar no controle data. você ta pondo no filter certo?? tenta por então isso esse codigo ai so o q vier depois do primero Where no filter e veja se funciona.

Link para o comentário
Compartilhar em outros sites

  • 0

Private Sub txtCodAnim_Validate(Cancel As Boolean)
Data1.Refresh
'Data1.Recordset.Filter = "CodigoDoCliente = " & txtCodAnim.Text
SQL = "Select * From Servico Where CodigoDoCliente = " & txtCodAnim & " And Data = (Select Max(Data) From Servico Where CodigoDoCliente = " & txtCodAnim & ")"
    If Not txtCodAnim.Text = Empty Then
    Set Data1.Recordset = Data1.Recordset.OpenRecordset
    Else
    End If
End Sub

eu coloquei assim, só que ele não seleciona o resultado. Esse Max no data é isso mesmo?

olha essa imagem, o cliente marco duas consultas, eu queria pegar a última.

cons_cnv.png

Link para o comentário
Compartilhar em outros sites

  • 0

pelo q parece você ta passando o codigo do animal pro codigo do cliente, isso ta certo??

agora otra coisa, você ta pondo a string na variavel sql e ta passando no filtro onde??

eu passei o exemplo no sql porque normalmente quando trabalhamos com recordset e executamos varias queryes, a gente primero poe a query na string e depois manda executar pra ficar mais facil caso se precise alterar mais tarde.

depois de por a query na string você teria q fazer alguma coisa com ela. exemplo:

sql = "Select * From Servico Where Codigo = " & codigo & " And Data = (Select Max(Data) From Servico Where Codigo = " & codigo & ")"
Data1.Recordset.Filter = sql[/code] mas não precisa usar a variavel sql, pode por a string direto no filter. agora acho q não seria exatamente isso. acho q o filter não vai aceitar o select desdo inicio. você teria q passar so o filtro da query (a partir do where) exemplo:
[code]Data1.Recordset.Filter = "Codigo = " & codigo & " And Data = (Select Max(Data) From Servico Where Codigo = " & codigo & ")"

mas ai tem um problema, não sei se o filter vai aceitar a subquery (o select q pega o max()), e na verdade acho q não aceita não. mas não custa tentar ai.

e ai se não aceitar, na verdade é basicamente a mesma coisa q você tera q fazer, mas ai você tem q filtrar o recordset primeiro so pelo cliente e depois sim encontrar a maior data (tipo, ordene por ordem decrescente de data e a maior data vai estar no primero registro). e ai depois filtre pelo cliente e pela maior data q vai estar no recordset.

veja ai se entende, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

  • 0

Private Sub txtCodAnim_Validate(Cancel As Boolean)
Data1.Refresh
Data1.Recordset.Filter = "CodigoDoAnimal = " & txtCodAnim.Text & " And Data = (Select Max(Data) From Servico Where CodigoDoAnimal = " & txtCodAnim.Text & ")"
    If Not txtCodAnim.Text = Empty Then
    Set Data1.Recordset = Data1.Recordset.OpenRecordset
    Else
    End If
End Sub
kuroi funciono a segunda tentativa!! Obrigado. E sobre o código só foi para teste mesmo, mudei para o certo. == Mas testando um pouco mais essas minhas consultas reparei o seguinte.. Na consulta onde procuro determinado Animal, eu utilizo o codigo do cliente, porque o animal não faz cadastro e sim o cliente. Sendo que o cliente pode ter 2, 3 ou sei lá quantos. Bom 2 podem ser do clubinho aí quando filtro o cliente na hora que eu clica para abrir o cadastro ele só abre o primeiro registro. Se não consegui explicar direito, creio que a imagem vai ajudar. conclianim.png filtrei usando o código do cliente, quero abrir o cadastro do animal cujo código dele é 4. Porém ele só pega o primeiro cadastro mesmo que clique encima do segundo. esse é o código para o clique, ele só funciona quando o usuario filtrar primeiro, caso ele não faça isso só ira aparecer a primeira msg, caso ele filtre e não houver resultado mostra a segunda msg, se houver resultado chega no ponto que falei. Como posso resolver esse problema?
Private Sub dbgAnimal_Click()
If txtCodCli.Text = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
Exit Sub
ElseIf Data1.Recordset.RecordCount < 1 Then
MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
Exit Sub
Else
dbgAnimal.Col = 0
   frmAnimal.lblCodCli2.Caption = dbgAnimal.Text
dbgAnimal.Col = 1
   frmAnimal.cboNomeCli.Text = dbgAnimal.Text
dbgAnimal.Col = 2
   frmAnimal.txtNomeAnim.Text = dbgAnimal.Text
dbgAnimal.Col = 3
   frmAnimal.lblCodAnimal2.Caption = dbgAnimal.Text
dbgAnimal.Col = 4
   frmAnimal.txtRaca.Text = dbgAnimal.Text
dbgAnimal.Col = 5
   frmAnimal.cboPorte.Text = dbgAnimal.Text
dbgAnimal.Col = 6
   frmAnimal.txtCor.Text = dbgAnimal.Text
dbgAnimal.Col = 7
   frmAnimal.txtPeso.Text = dbgAnimal.Text
dbgAnimal.Col = 8
   frmAnimal.cboTipo.Text = dbgAnimal.Text
dbgAnimal.Col = 9
   frmAnimal.txtIdade.Text = dbgAnimal.Text
dbgAnimal.Col = 10
   frmAnimal.cbGrupo.Text = dbgAnimal.Text
dbgAnimal.Col = 11
   frmAnimal.txtMatri.Text = dbgAnimal.Text
dbgAnimal.Col = 12
   frmAnimal.txtRenova.Text = dbgAnimal.Text
frmAnimal.lblCliChama.Caption = "x"
frmAnimal.Show
End If
End Sub

Editado por new_rayderss
Link para o comentário
Compartilhar em outros sites

  • 0

hum, o q faz essa linha aqui??

Set frmConsulta.DataConsulta.Recordset = Data1.Recordset.OpenRecordset
ela q faz o filtro?? se for, não devia ta antes da parte onde você passa os campos pro textbox?? alias, não to entendo esse codigo... ele vem de otro formulario?? ai você clica e chama o form de consulta?? mas porque você ta setando os valores nos texts antes de chamar o form?? não seria ser depois de ele ter selecionado?? esse grid consulta ta no form de consulta ou no form q chama?? alias, porque você altera os texts do form de consulta?? não teria q ser do form atual?? hum... seila, da uma explicada melhor em como ta funcionando esse evento. de qualquer forma, um jeito mais facil de escrever nos textbox acho q seria tipo assim:
frmConsulta.lblCodCli2.Caption = DataConsulta.Recordset("Nome_do_Campo")
ou assim:
frmConsulta.lblCodCli2.Caption = DataConsulta.Recordset.Fields("Nome_do_Campo")
ou você passa o numero do indice do campo como intero:
frmConsulta.lblCodCli2.Caption = DataConsulta.Recordset(1)

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro desculpa que copiei o código do clique errado. E sobre o set eu pensava que era necessário para abrir os dados, na verdade foi uma confusão minha, testando sem ele vi que não precisa.

agora explicando o evento do clique é assim, cada informação na coluna do dbgrid vai ser enviada para determinado campo do formulário do animal.

O problema é que ele não reconhece a linha que cliquei, filtrei usando o código do cliente, esse cliente tem 2 animais. E quero editar o animal cujo código é 4, porém mesmo clicando na segunda linha ele abre a primeira linha.

Ps: O dbgrid é só para consultar os resultados eu não posso modificar na nele é apenas para visualizar, caso queira modificar eu clico encima e aí ocorre o envio das informações para o formulário correspondente, no caso o do Cadastro do Animal.

melhoro?

Link para o comentário
Compartilhar em outros sites

  • 0

hum, você tento fazer isso aqui??

de qualquer forma, um jeito mais facil de escrever nos textbox acho q seria tipo assim:

frmConsulta.lblCodCli2.Caption = DataConsulta.Recordset("Nome_do_Campo")
ou assim:
frmConsulta.lblCodCli2.Caption = DataConsulta.Recordset.Fields("Nome_do_Campo")
ou você passa o numero do indice do campo como intero:
frmConsulta.lblCodCli2.Caption = DataConsulta.Recordset(1)

Link para o comentário
Compartilhar em outros sites

  • 0

ele vai reconhecer porque o grid ta vinculado com o recordset. se você seleciona uma linha no grid, ele automaticamente seleciona a linha correspondente no recordset.

e seria bem mais certo pegar os dados a partir do recordset do q pegar o texto do grid.

não sei porque ele ta pegando sempre a primera linha pra você, mas imagino q seja porque pra pegar o text você tem q setar tanto a propriedade Col quanto a Row. e clicar no grid, seleciona o registro no recordset mas não muda o row.

ai pra você usar no seu codigo é so você pegar os dados pelo campo no recordset em vez de ficar mudando de coluna e pegar o text do grid. tipo assim, em vez de:

dbgAnimal.Col = 0
   frmAnimal.lblCodCli2.Caption = dbgAnimal.Text
dbgAnimal.Col = 1
   frmAnimal.cboNomeCli.Text = dbgAnimal.Text[/code] faca:
[code]frmAnimal.lblCodCli2.Caption = DataConsulta.Recordset.Fields(0).Value
frmAnimal.cboNomeCli.Text = DataConsulta.Recordset.Fields(1).Value
e assim por diante. ou pegue pelo nome:
frmAnimal.lblCodCli2.Caption = DataConsulta.Recordset.Fields("Nome_do_Campo").Value
frmAnimal.cboNomeCli.Text = DataConsulta.Recordset.Fields("Nome_do_Outro_Campo").Value[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

If txtCodCli.Text = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
Exit Sub
ElseIf Data1.Recordset.RecordCount < 1 Then
MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
Exit Sub
Else
dbgAnimal.Col = 0
   frmAnimal.lblCodCli2.Caption = Data1.Recordset.Fields(0).Value
dbgAnimal.Col = 1
   frmAnimal.cboNomeCli.Text = Data1.Recordset.Fields(1).Value
dbgAnimal.Col = 2
   frmAnimal.txtNomeAnim.Text = Data1.Recordset.Fields(2).Value
dbgAnimal.Col = 3
   frmAnimal.lblCodAnimal2.Caption = Data1.Recordset.Fields(3).Value
dbgAnimal.Col = 4
   frmAnimal.txtRaca.Text = Data1.Recordset.Fields(4).Value
dbgAnimal.Col = 5
   frmAnimal.cboPorte.Text = Data1.Recordset.Fields(5).Value
dbgAnimal.Col = 6
   frmAnimal.txtCor.Text = Data1.Recordset.Fields(6).Value
dbgAnimal.Col = 7
   frmAnimal.txtPeso.Text = Data1.Recordset.Fields(7).Value
dbgAnimal.Col = 8
   frmAnimal.cboTipo.Text = Data1.Recordset.Fields(8).Value
dbgAnimal.Col = 9
   frmAnimal.txtIdade.Text = Data1.Recordset.Fields(9).Value
dbgAnimal.Col = 10
   frmAnimal.cbGrupo.Text = Data1.Recordset.Fields(10).Value
dbgAnimal.Col = 11
   frmAnimal.txtMatri.Text = Data1.Recordset.Fields(11).Value
dbgAnimal.Col = 12
   frmAnimal.txtRenova.Text = Data1.Recordset.Fields(12).Value
frmAnimal.lblCliChama.Caption = "x"
frmAnimal.Show
End If

Kuroi ainda não foi, tentei colocando o nome do campo, tentei colocando os números, tentei tirando a propriedade value, tentei utilizando isso

'Set frmAnimal.Data1.Recordset = Data1.Recordset.OpenRecordset

e não foi.

Link para o comentário
Compartilhar em outros sites

  • 0

não precisa ficar mudando de coluna tb se você for usar esse codigo. mas o q acontece?? ele continua mostrando o primero??

ai acho q o problema então é otro. tipo olhei aqui no projeto q você tinha me mandado antes. e no load do frmAnimal tem esse codigo aqui:

Data1Animal.DatabaseName = App.Path & "\BD\db2.mdb"
Data1Animal.RecordSource = "Animais"
Data1Animal.RecordsetType = 0[/code]

o q imagino q teja acontecendo é q você seta os dados no textbox, mas assim q o load é chamado, ele carrega o data e vincula com os controles, substituindo o texto q tava antes.

alem do mais, se os controles do frmAnimal tão vinculados com o controle data, acho q seria meio errado você editar os textos não?? o mais certo não seria procurar o registro??

exemplo, se o formulario ta apontando pro registro 1. e você edita os textboxs e escreve o mesmo texto do registro 2. ele continua apontando pro registro 1. você ta na verdade editando os dados do registro 1 e não apontando pro 2.

alias, isso ta acontecendo na sua consulta de clientes no projeto q eu tenho aqui, não sei se você corrigiu. pode fazer um teste ai. se você tiver dois clientes, abra o formulario e ele vai apontar pro primero, certo?? clica localizar e no form de consulta, selecione o registro 2. quando você voltar no form do cliente, vai ver todas as informacoes do registro 2, certo?? beleza, então clica em editar e depois gravar. abre la o seu banco. você vai ver agora... você tem 2 registros 2 e nenhum registro 1. porque isso acontece?? porque você não muda o pontero do recordset. so ta mudando os textos, entendeu??

o mais certo q você teria q fazer é: guardar somente o codigo do animal quando ele selecionar no form de consulta. você pode fazer isso com uma variavel global ou tipo igual aquele label q você fez q você punha um x lembra?? so q ai você guarda o codigo no label. mas não pode vincular o label com o data.

e depois você usa um findfirst ou um seek pra encontrar o registro de acordo com o codigo, entendeu??

Link para o comentário
Compartilhar em outros sites

  • 0

Sim ele continua mostrando o 1° e em relação a isso..

não precisa ficar mudando de coluna tb se você for usar esse codigo. mas o q acontece?? ele continua mostrando o primero??

ai acho q o problema então é otro. tipo olhei aqui no projeto q você tinha me mandado antes. e no load do frmAnimal tem esse codigo aqui:

Data1Animal.DatabaseName = App.Path & "\BD\db2.mdb"
Data1Animal.RecordSource = "Animais"
Data1Animal.RecordsetType = 0
o q imagino q teja acontecendo é q você seta os dados no textbox, mas assim q o load é chamado, ele carrega o data e vincula com os controles, substituindo o texto q tava antes. alem do mais, se os controles do frmAnimal tão vinculados com o controle data, acho q seria meio errado você editar os textos não?? o mais certo não seria procurar o registro?? exemplo, se o formulario ta apontando pro registro 1. e você edita os textboxs e escreve o mesmo texto do registro 2. ele continua apontando pro registro 1. você ta na verdade editando os dados do registro 1 e não apontando pro 2. alias, isso ta acontecendo na sua consulta de clientes no projeto q eu tenho aqui, não sei se você corrigiu. pode fazer um teste ai. se você tiver dois clientes, abra o formulario e ele vai apontar pro primero, certo?? clica localizar e no form de consulta, selecione o registro 2. quando você voltar no form do cliente, vai ver todas as informacoes do registro 2, certo?? beleza, então clica em editar e depois gravar. abre la o seu banco. você vai ver agora... você tem 2 registros 2 e nenhum registro 1. porque isso acontece?? porque você não muda o pontero do recordset. so ta mudando os textos, entendeu??
.. graças aó santo pai não está acontecendo :rolleyes:
o mais certo q você teria q fazer é: guardar somente o codigo do animal quando ele selecionar no form de consulta. você pode fazer isso com uma variavel global ou tipo igual aquele label q você fez q você punha um x lembra?? so q ai você guarda o codigo no label. mas não pode vincular o label com o data. e depois você usa um findfirst ou um seek pra encontrar o registro de acordo com o codigo, entendeu??
e quanto a essa idéia é eu fiz tudo só que não sei como posso montar esse findfirst..
Public corrente2, Per, Pergunta, Usu, Form, Style, [b]Verificar2[/b] As String
verificar2 é a variável, optei usar variavel porque vou utiliza-la em outro forms que tem a idéia parecida. Aí no fomulário do ConAnimal (onde eu faço a procura do animal)
Private Sub dbgAnimal_Click()
If txtCodCli.Text = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
Exit Sub
ElseIf Data1.Recordset.RecordCount < 1 Then
MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
Exit Sub
Else
Verificar2 = 0
dbgAnimal.Col = 3
   Verificar2 = Data1.Recordset.Fields(3).Value
frmAnimal.lblCliChama.Caption = "x"
frmAnimal.Show
End If
End Sub
coloquei como está aí encima. Agora falta o findfirst eu busco aqui nesse ou no do Cadastro do Animal ? e outra coisa eu estou utilizando a ídeia que você me deu. O data1animal esta vinculado com os objetos, e lembra que não podia fazer uma busca no mesmo tempo que peço para editar?
Private Sub Form_Load()
Data1Animal.DatabaseName = App.Path & "\db2.mdb"
Data1Animal.RecordSource = "Animais"
Data1Animal.RecordsetType = 1
Data1.DatabaseName = App.Path & "\db2.mdb"
Data1.RecordSource = "Animais"
Data1.RecordsetType = 1
.
.
End Sub

Agora lembro porque setava

Set frmAnimal.Data1.Recordset = Data1.Recordset.OpenRecordset

você que me deu essa idéia em alguns posts anteriores que estão neste tópico mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0
.. graças aó santo pai não está acontecendo :rolleyes:

serio?? no projeto q você me mandou aqui aconteceu sim... imagino q você tenha alterado então...

mas seila, se você diz q ta certo então beleza, mas é bom te certeza ai

e quanto a essa idéia é eu fiz tudo só que não sei como posso montar esse findfirst..

Public corrente2, Per, Pergunta, Usu, Form, Style, [b]Verificar2[/b] As String
verificar2 é a variável, optei usar variavel porque vou utiliza-la em outro forms que tem a idéia parecida. Aí no fomulário do ConAnimal (onde eu faço a procura do animal)
Private Sub dbgAnimal_Click()
If txtCodCli.Text = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
Exit Sub
ElseIf Data1.Recordset.RecordCount < 1 Then
MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
Exit Sub
Else
Verificar2 = 0
dbgAnimal.Col = 3
   Verificar2 = Data1.Recordset.Fields(3).Value
frmAnimal.lblCliChama.Caption = "x"
frmAnimal.Show
End If
End Sub[/code] coloquei como está aí encima. Agora falta o findfirst eu busco aqui nesse ou no do Cadastro do Animal ? acho melhor no frmAnimal. você abre, e testa se o x ta la, se tiver você da um findfirst nessa variavel. lembra o codigo??
e outra coisa eu estou utilizando a ídeia que você me deu. O data1animal esta vinculado com os objetos, e lembra que não podia fazer uma busca no mesmo tempo que peço para editar?
[code]Private Sub Form_Load()
Data1Animal.DatabaseName = App.Path & "\db2.mdb"
Data1Animal.RecordSource = "Animais"
Data1Animal.RecordsetType = 1
Data1.DatabaseName = App.Path & "\db2.mdb"
Data1.RecordSource = "Animais"
Data1.RecordsetType = 1
.
.
End Sub

Agora lembro porque setava

Set frmAnimal.Data1.Recordset = Data1.Recordset.OpenRecordset

você que me deu essa idéia em alguns posts anteriores que estão neste tópico mesmo.

hum, mas esse problema é pra usar o filter não?? e o filter você so vai fazer no data q ta no form de consulta. e o q você vai alterar ta no otro form não?? então não vai ter problema...

tipo, no form de consulta você vai filtrar. e ai ele seleciona, entre os registros do filtro, o codigo q ele quer. quando chegar no otro form, ele não faz filtro. ele selciona todos os registros. mas ai com o findfirst ele procura o codigo entre os registros selecionados (todos) e apenas aponta pro regsitro com esse codigo, mas não faz filtro nenhum.

Link para o comentário
Compartilhar em outros sites

  • 0

Sério!! conferi o banco de dados e está certinho.

quanto ao findfirst eu coloquei assim, no form Cadastro Do Animal

If lblCliChama.Caption = "x" Then
cmdEditar_Click
Data1.Recordset.FindFirst ("CodigoDoAnimal like '*" & Verificar2)
Unload ConAnimal
End If

só que apresenta esse erro, 3077 : Syntax error in String expression.

Link para o comentário
Compartilhar em outros sites

  • 0

hm agora não está dando nenhum erro, mais não está filtrando o resultado, ele abre o primeiro registro existente, ou seja estiver filtrado um cliente cujo codigo é 2 ele não considera nem isso e abre o primeiro cujo código é 1.

Tentei colocar o Find em um e no outro e nada.

o que pode esta acontecendo?

Link para o comentário
Compartilhar em outros sites

  • 0

hum, mas quando ele chamar a consulta o form do cadastro já vai estar aberto?? se tiver, ponha o codigo no evento q chama o form de consulta depois do show (imagino q teja chamando como modal)

senao, você tem q por essa linha aqui:

frmAnimal.lblCliChama.Caption = "x"

antes de acessar qualquer otra coisa no frmAnimal. porque senao o load é chamado antes de você setar o x e quando ele abrir o x não ta la.

se tb não funcionar, tenta por o find então, em vez de no load do frmAnimal, ponha no activate.

Link para o comentário
Compartilhar em outros sites

  • 0

No form que consulta os animais.

Private Sub dbgAnimal_Click()
If txtCodCli.Text = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
Exit Sub
ElseIf Data1.Recordset.RecordCount < 1 Then
MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
Exit Sub
Else
dbgAnimal.Col = 3
frmAnimal.lblAux2.Caption = Data1.Recordset.Fields(3).Value
frmAnimal.lblCliChama.Caption = "x"
frmAnimal.Show
End If
End Sub
No form do cadastro do Animal, no active.
Private Sub Form_Activate()
If lblCliChama.Caption = "x" Then
Data1.Recordset.FindFirst "CodigoDoAnimal = " & lblAux2.Caption
cmdEditar_Click
Unload ConAnimal
End If
End Sub

Eu tinha feito esse esquema, só que não funciono. Fiz o esquema da label daquele jeito mesmo que você me ensino, mas não obtive sucesso. :(

Editado por new_rayderss
Link para o comentário
Compartilhar em outros sites

  • 0

a mas tipo, você já não tava usando esse lblCliChama pra saber se vem do cliente?? ele já não ta testando o x em otra parte do codigo??

acho melhor usar dois labels separados. nem precisa desse do cliente. usa so o do codigo. ai pra testar, faca:

If lblAux2.Caption <> "" Then
Data1.Recordset.FindFirst "CodigoDoAnimal = " & lblAux2.Caption[/code] ou seja, se tiver preenchdio, ele procura, senao não. (obs: logico, q se você puser outro texto no label - como você q você pos o texto "Aqui!!" no label do x - então você tem q alterar tb no codigo acima) mas pra falar a verdade acho q não seria nd disso... você não respondeu, mas eu passei esse codigo imaginando q ele ta no form de consulta mas o formulario não ta aberto ainda. mas olhei no seu projeto, não sei se você alterou, mas ele so chama o form de consulta a partir do frmAnimal, certo?? então o frmAnimal já ta aberto quando ele ta no form de consulta?? bom então, se tiver nd disso vai funcionar mesmo. ai como eu disse, deve funcionar se você puser o find depois do show. tipo assim:
[code]Private Sub cmdLocalizar_Click()
    ConAnimal.Show 1
    If lblAux2.Caption <> "" Then
        Data1.Recordset.FindFirst "CodigoDoAnimal = " & lblAux2.Caption
    End If
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi você não sabe como mudou o projeto :P aquele lance no momento tirei por questão de teste. Mas estou usando ele para isso agora. observe os forms(ConAnimal e frmAnimal) que deixei aberto que você vai entender.

E não chamo como vbmodal ou 1 porque o esquema de chamar outro form da erro.

não está funcionando ainda, vou deixar o projeto que está mais atualizado.

Aqui esta o projeto conto com sua ajuda ;)

Projeto

Link para o comentário
Compartilhar em outros sites

  • 0

a então, olhei la e o principal erro é q você ta dando o find no Data1, mas o data q ta vinculado com o formulario é o Data1Animal. se você der find no Data1 não vai acontecer nd. acho q você ta confundindo, a ideia do segundo objeto data era só pra usar filter, você pode usar o find no data original.

otro problema q aconteceu aqui tb é problema com o tempo do clique. tipo, se você clica no grid o evento é chamado normalmente em menos tempo q ele leva pra mudar de registro. ai você preenche o label do otro form com o codigo q ele tava antes de clicar e não no q ele clicou.

pelo menos aconteceu aqui comigo, acho q o melhor seria por no evento DblClick não??

fora isso, nessa parte aqui:

If lblCliChama.Caption = "x" Then
cmdEditar_Click
Unload ConAnimal
If lblAux2.Caption <> "0" Then
Data1.Recordset.FindFirst "CodigoDoAnimal = " & lblAux2.Caption '& Verificar2
End If
End If[/code]

acho q você devia chamar o editar só depois do find ne??

ve ai q deve funcionar.

EDITADO:

ou e quanto a instalacao automatica da ocx q você comentou na mp, é so você adicionar quando você for fazer o instalador. você faz o instalador em menu Iniciar -> Programas -> Microsoft Visual Studio 6.0 -> Microsoft Visual Studio 6.0 Tools -> Package & Deployment Wizard ou usar o programa InnoSetup (procura no google, é free), q é bem melhor.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0

funcionooo :P

Achei que o find seguia a mesma idéia do filter, e sabe que olhando aqui, o problema todo foi porque coloquei como click :P

O que você falo esta certíssimo. Mas aprendi bastante com isso e um novo método para enviar dados de um form para outro.

E quanto a ocx eu já estou pesquisando sobre isso, achei um tuto do marcoratti sobre o inno vou dar uma lida nele. Criar um setup resolve tudo mesmo, mais queria aprender o batch pelo exemplo de agora eu passo o projeto para alguém no vb ainda sem estar compilado aí a pessoa não tem a ocx ao invés dela registrar, já clicar batch e pronto, evitando possível erro do receptor erra no caso a sintaxe ou não saber o que fazer. :P Estou pesquisando sobre isso tb ^^

obrigado pela força amigo!!

Editado por new_rayderss
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...