Bom dia!
É o seguinte, não consigo formatar os dados tipo número que são exibidos na DBGrid. Este é o cenário:
- Estou utilizando DAO com banco de dados ACCESS, um DBGrid (que chamei de dbgrdCustos) e um Controle DATA (que chamei de dtaCustos).
Existe um formulário principal (frmPrincipal) onde existem 3 ComboBox (Cliente, OS e Evento). Selecionando o cliente, aparecem somente as OS´s deste cliente na ComboBox OS. E selecionando uma dessas OS´s, aparecem somente os Eventos desta OS na ComboBox Evento. Ao clicar em algum evento, o ID desse evento é guardado em uma variável (varIDEvent).
Ao clicar em OK, é carregado outro formulário (frmCustos) onde existe a DBGrid + o controle DATA. E no Load deste formulário existe o código abaixo, responsável pelo preenchimento da DBGrid:
dtaCustos.RecordSource = ("SELECT Pedido,NF,Data,Valor,PerICMS,ICMS,PerIPI,IPI,Fornec,Obs " & _
"FROM ((tblFornec INNER JOIN tblDados " & _
"ON tblFornec.IDFrnc = tblDados.IDFornec) " & _
"INNER JOIN tblEvento " & _
"ON tblDados.IDEvento = tblEvento.IDEvent) " & _
"WHERE IDEvento = " & " " & frmPrincipal.VarIDEvent & " " & _
"ORDER BY Data ")
Ou seja, o RecordSource do controle DATA é a instrução SQL acima, onde só quero que sejam exibidos os eventos de uma determinada OS de um determinado cliente. Reparem que na cáusula ("WHERE IDEvento = " & " " & frmPrincipal.VarIDEvent & " )
é que uso o valor do ID clicado na combobox do frmPricipal.
Desculpem escrever tanto, mas até aqui está tudo certo. A DBGrid faz exatamente o que eu quero (exibir o resultado conforme a instrução SQL).
Mas o problema é que não consigo formatar os dados exibidos na DBGrid.
O que eu tentei fazer para resolver o problema:
- A instrução SQL traz cria as colunas automaticamente. Mas sempre serão 10 colunas. Usei a opção EDIT e inseri o mesmo número de colunas que a instrução SQL cria, mas quando executo o código, tudo fica em branco. A quantidade de linhas até aparece na tela, mas tudo em branco. Linhas e colunas em branco. Sem informações e não é gerado nenhum erro.
- Tentei também usar o controle Adodc com DataGrid no lugar de controle DATA com DBGGrid, pois nas propriedades do componente DataGrid existe uma opção "Format".
Pois bem, fiz isso. Mas tive que usar o DataEnvironment para poder mecher das propriedades do DataGrid. Deu certo até certo ponto porque eu consigui exibir os dados formatados, mas não consegui mais usar a variável VarIDEvent (vinda do clique da combobox Evento do frmPrincipal). Não consegui usá-la porque o código SQL fica dentro do DataEnvironment e EU ACHO que lá ele não considera variáveis. Pelo menos eu tentei e não consegui.
Resumindo, esse é o problema:
- Se eu quiser usar uma variável para resgatar do banco de dados apenas as informações necessárias, eu não consigo formatar a DBGrid.
- Se eu uso o DataGrid, não cosigo usar a variável para interagir com o clique do usuário vindo de um formulário.
As minhas perguntas:
- Isso tem sentido? Fiz alguma besteira?
- Existe a possibilidade do DataEnvironment reconhecer, no código SQL, que eu preciso de uma variável??
Obrigado!!
Flávio