Ir para conteúdo

Arquivado

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

Beavis440

Conslta em DataGrid

Recommended Posts

Pessoal,

 

Criei um formulário no meu projeto para visualizar resumidamente as Ordens de servisos e a partir delas ter acesso a ordem detalhada.

Com isso criei duas DataGrid.

Um com o nome de DGSolicitador que mostras os dados do cliente e outra com o nome de DGItens para mostras os itens que cada ordem de serviço recebe.

Para melhor entendimento tem a imagem abaixo.

 

374430_466407656735586_2102652039_n.jpg

 

Bom o que quero fazer é o seguinte, podem notar que na DataGrid de cima que tem os dados do cliente, esta selecionado a ordem de serviço número 18 e na DataGrid de baixo que tem as lista de Itens, tem um item que pertence a ordem de serviço número 6 e outra que pertence ao número 18.

Gostaria que quando eu selecionace a ordem de serviço na Grid de cima automaticamente ja filtrasse ficando somente os itens da Ordem delecionada.

Estou usando VB6

Dez de ja Agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou te dar a lógica, pode ser que no VB6 seja diferente com essas coisas de RecordSet e tudo mais.

 

Ao selecionar uma célula dentro do primeiro grid, antes de fazer a consulta no banco de dados buscando todos os itens com o ID de numero 18, limpe o DataGrid, tirando sua DataSource, utilizando também o comando "grid.rows.clear" e "grid.collumns.clear", depois de feito isso você preenche uma DataTable e a adiciona como Datasource do segundo grid.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso o que eu quero.

Mas pra isso éi preciso saber que código é que esta selecionado no DataGrid de cima para filtrar o de baixo. Só que não estou conseguindo o código para extrair a informação da célula selecionada da coluna Codigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz, eu achei alguns exemplos:

 

http://answers.yahoo.com/question/index?qid=20070803083906AAmPvid

 

Mas eu encontrei uma referencia na MSDN dizendo que o SelEndCol e o SelStartCol são equivalentes a esse comando que eu passei

 

http://msdn.microsoft.com/pt-br/library/y4ddh1ac(v=vs.80).aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente não to conseguindo.

Tenter fazer dessa forma.

 

Private Sub DGSolicitador_SelChange(Cancel As Integer)
   Abre_Conexao
   Dim Codigo2 As String
   Codigo2 = DGSolicitador.GetBookmark(0)
   SQL = "Select * from ListItens where Codigo = '" & Codigo2 & "'"
   ADOItens.CommandType = adCmdText
   ADOItens.RecordSource = SQL
   ADOItens.Refresh
       Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly '<<<<<< erro aqui'
End Sub

 

Erro com o nome de ADODC1

 

Tipo de dados incompatível na expressão de critério

 

O que eu tendo no código é criar uma váriavel na SQL.

Essa váriavel eu queria pegar o valor da célula Codigo selecionada.

Alguém sabe como fazer isso??

 

Fiz uma pequena modificação e o código esta pegando na SQL

 

    Abre_Conexao
   Dim Codigo2 As String
   Codigo2 = DGSolicitador.Columns(0).Value
   SQL = "Select * from ListItens where Codigo = '" & Codigo2 & "'"
   ADOItens.CommandType = adCmdText
   ADOItens.RecordSource = SQL
   ADOItens.Refresh
       Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly

 

Testando SQL

?SQL

Select * from ListItens where Codigo = '6'

 

Só que o erro perciste.

 

Aeee Khaos,

 

Muito obrigado pela ajuda. Após bater muito a cabeça aqui tentando entender o exemplo que me passou finalmente consegui. Como código é número, tinha que colocar aspa simples.

Fica o código para quem precisar.

 

Private Sub DGSolicitador_SelChange(Cancel As Integer) 'Sub para o código de selecionar uma linha na Grid de cima'
   Abre_Conexao 'Abre a conexão com o banco de dados'
   Dim Codigo2 As String 'Cria a variável para a SQL'
   Codigo2 = DGSolicitador.Columns(0).Value 'Variável se torna o valor da célula selecionada na coluna Codigo'
   SQL = "Select * from ListItens where Codigo = " & Codigo2 & "" 'Comando SQL com a variável'
   ADOItens.CommandType = adCmdText 'Altera a propriedade CommandType para adCmdText da conexão ADODC para aceitar a SQL'
   ADOItens.RecordSource = SQL 'Altera a RecordSource para o novo comando SQL criado'
   ADOItens.Refresh 'Atualiza o DataDrid de Itens
       Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Criei um formulário no meu projeto para visualizar resumidamente as Ordens de servisos e a partir delas ter acesso a ordem detalhada.

Com isso criei duas DataGrid.

Um com o nome de DGSolicitador que mostras os dados do cliente e outra com o nome de DGItens para mostras os itens que cada ordem de serviço recebe.

Para melhor entendimento tem a imagem abaixo.

 

374430_466407656735586_2102652039_n.jpg

 

Bom o que quero fazer é o seguinte, podem notar que na DataGrid de cima que tem os dados do cliente, esta selecionado a ordem de serviço número 18 e na DataGrid de baixo que tem as lista de Itens, tem um item que pertence a ordem de serviço número 6 e outra que pertence ao número 18.

Gostaria que quando eu selecionace a ordem de serviço na Grid de cima automaticamente ja filtrasse ficando somente os itens da Ordem delecionada.

Estou usando VB6

Dez de ja Agradeço

 

 

Olá, sei que vou mudar de "saco" pra mala, mas percebi q você fez calculo dentro do datagrid, pode me orientar em como fazer isso!!!1

 

ola, fiz uma consulta parecida, e criei uma Query com a minha condicao, o que fiz foi o seguinte.

 

Tenho uma lista de paciente e outra de espera para etendimentos.

O que fiz foi, consultar o paciente e listar quais atendimentos ele esta esperando. pode ser que t ajude

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cristiane, no meu caso esse DataGrid e de somente consulta, ainda não pesquisei como fazer calculos dentro dele.

Os meus calculos estão sendo feito nas textboxs. Onde que fiz da seguinte forma.

 

txtTotal = Val(txtQuantidade) * Val(txtValUnitario)

 

Ele gera esse calculo antes de inserir no banco de dados.

Espero ter ajudado.

 

Khaos,

 

Sabe me dizer como posso alterar a propriedade connectionstring do ADODC para que eu possa salvar o projeto em qualquer lugar sem dar erro de conexão.

Atualmente ele esta assim:

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Users\Marcos\Saved Games\Desktop\Projeto2\Teste\Dados.mdb;Persist Security Info=False

 

Sei que tenho que por App.Path mas esta dando erro nas aspas, poderia me dizer como tem que ficar no código para não ter conflito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Beavis

 

Copie o banco de dados para dentro da pasta "bin" da aplicação e mude a String (no app.config) para:

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Dados.mdb;Persist Security Info=False

 

@Cristiane

 

Tente pesquisar o comando SUM do SQL, ele realiza contas de adição, existem outros comandos de calculo para os 4 básicos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você cria uma solution e debuga ela, o VB cria uma pasta chamada bin, dentro da pasta da solução, é onde se encontram os arquivos executáveis e necessários da sua aplicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Khoas,

 

Procurando na internet código e tal para conexão achei esse.

 

Conexão:

Public Sub ConectaADODC()
   Arquivo = App.Path & "\Dados.mdb"
   ADODCconect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Arquivo & ";Persist Security Info=False"
   ADODCconect.CursorLocation = adUseClient
   ADODCconect.Open
End Sub

 

Ao carregar o formulário

 

Private Sub Form_Load()
   ConectaADODC
   Dados.ConnectionString = ADODCconect
   Set DataGrid1.DataSource = Dados
   LimpaConsulta
End Sub

 

Fazendo isso estava dando certo, podia colocar onde eu quizesse o programa que funcionava corretamente.

Mas aii pensei se esta funcionando é porque deve estar gerando algum string na propriedade ConnectionString do ADODC.

Então testar o nome no Immediate olha no que deu:

 

?Dados.ConnectionString

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=Dados.mdb;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;

 

Bom o código é enorme. Ai resolvi colocar esse comando direto la nas propriedades para ficar fixo. E apaguei os códigos de conexão. E pra minha alegria continuou funcionando o programa perfeitamente.

Então me diga é válido esse código, que se for vou colocar ele ali em cima nos tutorias porque não achei nada na net parecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não encontrei essa pasta não. Poderia me dizer o caminho. Porque na pasta do projeto não esta.

 

Outra coisa é que esse código deu errado.

Ontem ele estava funcionando perfeitamente, incluxive fiz vários testes.

Mas hoje quando liguei o PC novamente ele começou a acusar que não estava achando o banco de dados na pasta sisten32.

Muito enstranho isso pois tava tudo certo e eu não mexi em nada :@

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você verificou se o BD estava na pasta System?

 

Geralmente a pasta bin fica no diretório onde você salvou a solution, vai ter uma pasta bin, uma release e outras pastas juntamente com todos os arquivos que você salvou sua solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Khaos,

 

Na verdade não é para a pasta estar no Sistem, e sim onde o executavel estiver.

Muito estranho o código do connectionString funciona sim, só tive que continuar mantendo o código:

Private Sub Form_Load()
   ConectaADODC
   Dados.ConnectionString = ADODCconect
   Set DataGrid1.DataSource = Dados
   LimpaConsulta
End Sub

 

Sei la parece que quando reinicia o PC ele se perde as configurações então com esse código ele tipo que se reatualiza.

Bom finalmente consegui.

Que dor de cabeça que isso aqui da hennnn meu paiii hehehhehee.

Vlww aii pela ajuda.

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.