
etspaz
Membros-
Total de itens
62 -
Registro em
-
Última visita
Tudo que etspaz postou
-
(Resolvido) filtrar registros sem fazer nova consulta ao banco
pergunta respondeu ao etspaz de etspaz em Delphi, Kylix
eu consegui resolver, tirei o botão de pesquisa, pois quando o form é carregado já traz todos registro no grid, e no evento onchange do edit coloquei: cds_contato.Filtered := False; cds_contato.Filter := 'nome like ' + #39 + '%' + Edit_filtranome_contato.Text + '%' + #39; cds_contato.Filtered := True; assim quando o usuario vai digitando, o resultado vai sendo filtrado, como no help de alguns programas e não precisa fazer outro select só pra isso. obrigado a todos pela ajuda. abraços. -
(Resolvido) filtrar registros sem fazer nova consulta ao banco
uma questão postou etspaz Delphi, Kylix
bom dia a todos. bem eu tenho um dbgrid e um edit para filtrar, inicialmente eu tinha um botão e no onclick fazia um select assim: 'select * from tabtal where upper(nome) like upper(' + #39 + '%' + edit_NomeCliente.Text + '%' + #39 + ') order by nome'; funciona, mas o que eu quero é não ter que fazer outra pesquisa no banco diminuindo a performance, um colega disse pra eu usar locate. CDS_CONTATO.Locate('NOME',Edit_filtranome_contato.Text,[loCaseInsensitive]); esse código aí não faz nada, pois eu quero que a medida que o usuario vai digitando as letras os nomes vão sendo filtrados no grid. vlw! -
problema resolvido! o problema era que estava faltando rtes udfs no banco, pois o servidor é linux e criaram estas udfs pro firebird, mas o cliente usa windows e eu estava usando um backup do banco do cliente mas na minha maquina faltava adicionar estas udfs, depois disso foi q foi hehe agradeço a todos pela ajuda neste problema
-
micheus realmente todos formularios são criados em tempo de execução, mas está definido direitinho lá em project>opções>forms, do lado direito. e no codigo está certo, já conferi isto, mas taí o codigo do form principal, onde chama os outros forms, pro pessoal da uma analizada. olhei também no oncreate dos forms e ta normal, compilei em maquinas diferentes e o problemas persistem, então conclui que realmente não são do delphi. procedure TFrmPrincipal.acClienteExecute(Sender: TObject); begin try frm_cliente := TFrm_Cliente.Create(self); frm_cliente.ShowModal; finally FreeAndNil(frm_cliente); end; end; procedure TFrmPrincipal.acTipoClienteExecute(Sender: TObject); begin if not assigned(Frm_Tipocliente) then application.CreateForm(TFrm_Tipocliente,Frm_Tipocliente); Frm_Tipocliente.ShowModal; end; procedure TFrmPrincipal.acEspecialidadeExecute(Sender: TObject); begin if not assigned(Frm_TipoEspecialidade) then application.CreateForm(TFrm_TipoEspecialidade,Frm_TipoEspecialidade); Frm_TipoEspecialidade.ShowModal; end; procedure TFrmPrincipal.acFamiliaExecute(Sender: TObject); begin if not assigned(Frm_Familia) then application.CreateForm(TFrm_Familia,Frm_Familia); Frm_Familia.ShowModal; end; procedure TFrmPrincipal.acTipoProdutoExecute(Sender: TObject); begin if not assigned(Frm_TipoProduto) then application.CreateForm(TFrm_TipoProduto,Frm_TipoProduto); Frm_TipoProduto.ShowModal; end; procedure TFrmPrincipal.acFornecedorExecute(Sender: TObject); begin if not assigned(Frm_Fornecedor) then application.CreateForm(TFrm_Fornecedor,Frm_Fornecedor); Frm_Fornecedor.ShowModal; end; procedure TFrmPrincipal.acProdutosExecute(Sender: TObject); begin if not assigned(Frm_Produtos) then application.CreateForm(TFrm_Produtos,Frm_Produtos); Frm_Produtos.ShowModal; end; procedure TFrmPrincipal.acFormaPgtoExecute(Sender: TObject); begin if not assigned(Frm_FormaPgto) then application.CreateForm(TFrm_FormaPgto,Frm_FormaPgto); Frm_FormaPgto.ShowModal; end; procedure TFrmPrincipal.acComprasExecute(Sender: TObject); begin {if not assigned(Frm_Compras) then application.CreateForm(TFrm_Compras,Frm_Compras); Frm_Compras.ShowModal;} try frmComrpasNew := TfrmComrpasNew.Create(self); frmComrpasNew.ShowModal; finally FreeAndNil(frmComrpasNew); end; end; procedure TFrmPrincipal.acVendasExecute(Sender: TObject); begin if not assigned(Frm_Vendas) then application.CreateForm(TFrm_Vendas,Frm_Vendas); Frm_Vendas.ShowModal; Frm_Vendas.Free; Frm_Vendas := Nil; end; procedure TFrmPrincipal.tbtnVendaConsignadaClick(Sender: TObject); begin if not assigned(Frm_BaixadevendaConsignada) then application.CreateForm(TFrm_baixadevendaConsignada,Frm_baixadevendaConsignada); Frm_BaixadevendaConsignada.ShowModal; end; procedure TFrmPrincipal.tbtnContaCorrenteClick(Sender: TObject); begin if not assigned(Frm_ContaCorrente) then application.CreateForm(TFrm_ContaCorrente,Frm_ContaCorrente); Frm_ContaCorrente.ShowModal; Frm_contaCorrente.Free; Frm_ContaCorrente := Nil; end; procedure TFrmPrincipal.VendasporFornecedor1Click(Sender: TObject); begin if not assigned(Frm_RelatorioVendasFornecedor) then application.CreateForm(TFrm_RelatorioVendasFornecedor, Frm_RelatorioVendasFornecedor); Frm_RelatorioVendasFornecedor.ShowModal; end; procedure TFrmPrincipal.Clientes1Click(Sender: TObject); begin DmDentalita.RvProject.execute; end; procedure TFrmPrincipal.VendasporCliente1Click(Sender: TObject); begin if not assigned(Frm_RelatorioVendasCliente) then application.CreateForm(TFrm_RelatorioVendasCliente, Frm_RelatorioVendasCliente); Frm_RelatorioVendasCliente.ShowModal; end; procedure TFrmPrincipal.PorProduto1Click(Sender: TObject); begin if not assigned(Frm_RelatorioVendasProdutos) then application.CreateForm(TFrm_RelatorioVendasProdutos, Frm_RelatorioVendasProdutos); Frm_RelatorioVendasProdutos.ShowModal; end; procedure TFrmPrincipal.Preos1Click(Sender: TObject); begin if not assigned(Frm_ListaPrecos) then application.CreateForm(TFrm_ListaPrecos, Frm_ListaPrecos); Frm_ListaPrecos.ShowModal; end; procedure TFrmPrincipal.Estoque1Click(Sender: TObject); begin if not assigned(Frm_Estoque) then application.CreateForm(TFrm_Estoque, Frm_Estoque); Frm_Estoque.ShowModal; end; procedure TFrmPrincipal.Fornecedor2Click(Sender: TObject); begin DmDentalita.RvProject6.execute; end; procedure TFrmPrincipal.Sair2Click(Sender: TObject); begin application.Terminate; end; procedure TFrmPrincipal.EstoqueMnimo1Click(Sender: TObject); begin DmDentalita.RvProject7.execute; end; procedure TFrmPrincipal.pornome1Click(Sender: TObject); begin //DmDentalita.RvProject.execute; try frmRelListaClientes := TfrmRelListaClientes.Create(self); frmRelListaClientes.ShowModal; finally FreeAndNil(frmRelListaClientes); end; end; procedure TFrmPrincipal.porcidade1Click(Sender: TObject); begin //DmDentalita.RvProject8.execute; try frmRelClientesPorCidade := TfrmRelClientesPorCidade.Create(self); frmRelClientesPorCidade.ShowModal; finally FreeAndNil(frmRelClientesPorCidade); end; end; procedure TFrmPrincipal.FormShow(Sender: TObject); var Data,Data2 : String; begin Data := DateToStr(Date()); Data2 := Copy(Data,1,2) + '.' + Copy(Data,4,2) + '.' + Copy(Data,7,4); Frm_Login := TFrm_Login.Create(self); try Frm_Login.ShowModal; finally Frm_Login.Free; end; Frm_Progresso := TFrm_Progresso.Create(self); try Frm_Progresso.ShowModal; finally Frm_Progresso.Free; end; {Comentado por: Leonel - 31/01/2005 Comentário: Rotina para ocultar ou exibir o botão de acordo com pendências no follow up } dmDentalita.SDT_consluta_followup.Close; dmDentalita.SDT_consluta_followup.DataSet.CommandText := 'select * from FOLLOW_UP '; //+ //'where DATA_INICIAL_ALARME <= ' + #39 + Data2 + #39 + ' and STATUS = ' + #39 + 'P' + #39; //ShowMessage(dmDentalita.SDT_consluta_followup.DataSet.CommandText); dmDentalita.SDT_consluta_followup.Open; if (dmdentalita.SDT_consluta_followup.RecordCount > 0) then begin btnVerificarPendencias.Visible := True; Stbar.Panels.Items[0].Text := 'Há clientes com pendências. Clique em Pendências para ver a lista de pendências'; end else btnVerificarPendencias.Visible := False; {carrega por padrão o arquivo de imagem que se encontra no mesmo diretório da aplicação chamado: img_gestao.jpg caso não encontre a aplicação dá um erro oculto e segue em frente} try Img_fundo.Picture.LoadFromFile('img_gestao.jpg'); except end; end; procedure TFrmPrincipal.Movimentao1Click(Sender: TObject); begin Frm_Movimentos := TFrm_Movimentos.Create(self); try Frm_Movimentos.ShowModal; finally Frm_Movimentos.Free; end; end; procedure TFrmPrincipal.Lanar1Click(Sender: TObject); begin if not assigned(Frm_ContaCorrente) then application.CreateForm(TFrm_ContaCorrente,Frm_ContaCorrente); Frm_ContaCorrente.ShowModal; Frm_ContaCorrente.Free; Frm_ContaCorrente := Nil; end; procedure TFrmPrincipal.Fechamento1Click(Sender: TObject); begin Frm_Fecha := TFrm_Fecha.Create(self); try Frm_Fecha.ShowModal; finally Frm_Fecha.Free; end; end; procedure TFrmPrincipal.Cobrana1Click(Sender: TObject); begin Frm_Cob := TFrm_Cob.Create(self); try Frm_Cob.ShowModal; finally Frm_Cob.Free; end; end; procedure TFrmPrincipal.Perfil1Click(Sender: TObject); begin Frm_Perfil := TFrm_Perfil.Create(self); try Frm_Perfil.ShowModal; finally Frm_Perfil.Free; end; end; procedure TFrmPrincipal.Usuario1Click(Sender: TObject); begin Frm_Usuario := TFrm_Usuario.Create(self); try Frm_Usuario.ShowModal; finally Frm_Usuario.Free; end; end; procedure TFrmPrincipal.ipodeMovimentao1Click(Sender: TObject); begin Frm_TipoMov := TFrm_TipoMov.Create(self); try Frm_TipoMov.ShowModal; finally Frm_TipoMov.Free; end; end; procedure TFrmPrincipal.ConsultadeFaturas1Click(Sender: TObject); begin Frm_Cons_Fatura := TFrm_Cons_Fatura.Create(self); try Frm_Cons_Fatura.ShowModal; finally Frm_Cons_Fatura.Free; end; end; procedure TFrmPrincipal.acMensagemExecute(Sender: TObject); begin if not assigned(FrmMensagem) then application.CreateForm(TFrmMensagem,FrmMensagem); FrmMensagem.ShowModal; end; {Comentado por: Leonel - 27/01/2005 Comentário: Relatório de Estoques por fornecedor } procedure TFrmPrincipal.EstoqueporFornecedor1Click(Sender: TObject); begin if not assigned(Frm_RelatorioEstoqueFornecedor) then application.CreateForm(TFrm_RelatorioEstoqueFornecedor,Frm_RelatorioEstoqueFornecedor); Frm_RelatorioEstoqueFornecedor.ShowModal; end; {Comentado por: Leonel - 27/01/2005 Comentário: Relatório de Estoques Agrupados por fornecedor } procedure TFrmPrincipal.EstoquesAgrupadosporFornecedor1Click( Sender: TObject); begin if not assigned(Frm_EstoqueAgrupadoFornecedor) then application.CreateForm(TFrm_EstoqueAgrupadoFornecedor,Frm_EstoqueAgrupadoFornecedor); Frm_EstoqueAgrupadoFornecedor.ShowModal; end; procedure TFrmPrincipal.MapaDirio1Click(Sender: TObject); begin if not assigned(Frm_RelMapaDiario) then application.CreateForm(TFrm_RelMapaDiario,Frm_RelMapaDiario); Frm_RelMapaDiario.ShowModal; end; procedure TFrmPrincipal.btnVerificarPendenciasClick(Sender: TObject); var Data,Data2 : String; begin Data := DateToStr(Date()); Data2 := Copy(Data,1,2) + '.' + Copy(Data,4,2) + '.' + Copy(Data,7,4); if not assigned(Frm_ListaFollowUp) then application.CreateForm(TFrm_ListaFollowUp,Frm_ListaFollowUp); //Atualiza a consulta de Pendências dmDentalita.SDT_consluta_followup.Close; dmDentalita.SDT_consluta_followup.DataSet.CommandText := 'select * from FOLLOW_UP ' + 'where DATA_INICIAL_ALARME <= ' + #39 + Data2 + #39 + ' and STATUS = ' + #39 + 'P' + #39; dmDentalita.SDT_consluta_followup.Open; Frm_ListaFollowUp.btnInserir.Visible := False; Frm_ListaFollowUp.ShowModal; end; procedure TFrmPrincipal.PorVendedor1Click(Sender: TObject); begin Frm_RelVendasVendedor := TFrm_RelVendasVendedor.Create(self); try Frm_RelVendasVendedor.ShowModal; finally FreeAndNil(Frm_RelVendasVendedor); end; end; procedure TFrmPrincipal.PorProdutosAgrupadosporFornecedor1Click( Sender: TObject); begin FrmRelVendasProdAgFornecedor := TFrmRelVendasProdAgFornecedor.Create(self); try FrmRelVendasProdAgFornecedor.ShowModal; finally FreeAndNil(FrmRelVendasProdAgFornecedor); end; end; procedure TFrmPrincipal.quenofizeramcompras1Click(Sender: TObject); begin FrmRelClientes := TFrmRelClientes.Create(self); try FrmRelClientes.ShowModal; finally FreeAndNil(FrmRelClientes); end; end; procedure TFrmPrincipal.ItensDevolvidos1Click(Sender: TObject); begin FrmRelItensDevolvidos := TFrmRelItensDevolvidos.Create(self); try FrmRelItensDevolvidos.ShowModal; finally FreeAndNil(FrmRelItensDevolvidos); end; end; no evenento oncreate do frm_cliente por exemplo está mandando abrir um dataset, que está normal.
-
boa tarde a todos, estou com um problema que est´s me atrapalhando muito. um projeto em que estou trabalhando esta dando access vilation em varias telas, sempre quando vai abrir alguma tela. sempre pára num showmodal ; já tentei debygar mas como não passa do show de um formulario não consigo identificar já que nos eventos destas telas que abor já conferi que não tem nada errado, não achei em nenhum lugar uma chamada a um objeto inexistente na memoria, o que pode ser já que esta acontecendo com todas telas do sistema, só abre a principal. será alguma coisa com o delphi? estou precisando de ajuda mesmo, pois é minha segunda semana no estagio que suei pra entrar e não consegui andar nada neste sistema.
-
colega ... se voce acrescentou o campo vendedor no dbgrid usando o editor de colunas do dbgrid, e não definiu este campo na select ou não importou o campo para dentro do dataset, este erro pode acontecer. muito provavelmente o erro acontece quando voce abre (open) o dataset ou a select... verifique abraço e aeh beleza Jhonas, na verdade eu defini o campo na select, importei para o dataset e na propriedade collums do dbgrid ele já era visivel, só criei as colunas e selecionei os campos em datafield, mas o erro persiste. obrigado pela atenção!
-
opa voltei, olha não consegui identificar o erro ainda então vou tentar explicar melhor, me desculpem o sumiço é por que eu fiquei fora do ar ontem. DmDentalita.FollowUp(StrToInt(Dbedit_codcliente.Text),' Clientes'); é uma procedure criada em dmdentalita. followup são pendencias de clientes . este é o codigo: procedure TDmDentalita.FollowUp(cod_cliente : integer; chamador : String); begin sdt_consluta_followup.Close; sdt_consluta_followup.DataSet.CommandText := ''; sdt_consluta_followup.DataSet.CommandText := 'select * from FOLLOW_UP where CLIENTE_ID = ' + IntToStr(cod_cliente); sdt_consluta_followup.Open; if sdt_consluta_followup.DataSet.RecordCount = 0 then begin //Caso o cliente não tenha pendências, é perguntado ao usuário se ele quer cadastrar uma nova if MessageDlg('Não há registros de Follow Up para este cliente. Deseja cadastrar um novo?',mtConfirmation,[mbOK,mbCancel],0) = mrOK then begin if not assigned(Frm_FollowUp) then application.CreateForm(TFrm_FollowUp,Frm_FollowUp); if not dts_follow_up.DataSet.Active then dts_follow_up.DataSet.Open; DmDentalita.Dts_Follow_up.DataSet.Filtered := False; DmDentalita.Dts_Follow_up.DataSet.Filter := 'CLIENTE_ID = ' + IntToStr(cod_cliente); DmDentalita.Dts_Follow_up.DataSet.Filtered := True; Frm_FollowUp.InserirFollowUp(cod_cliente); Frm_FollowUp.ShowModal; end; end else begin //Caso o cliente tenha pendências, é exibida a lista de follow up (todas as ocorrências) if not assigned(Frm_ListaFollowUp) then application.CreateForm(TFrm_ListaFollowUp,Frm_ListaFollowUp); if chamador = 'Principal' then Frm_ListaFollowUp.btnInserir.Visible := False else Frm_ListaFollowUp.btnInserir.Visible := True; Frm_ListaFollowUp.ShowModal; end; end; porém o erro surgiu depois que eu fiz algumas alterações, seguinte: o sistema tem uma tela para gravar novos followups, eu tive que incluir um campo do vendedor para gravar com o nome do vendedor. usei um dbloockupcombobox para selecionar o nome do vendedor. a query usada é esta: select * from usuario usuario é a tabela que tem os dados do vendedor. bem acho que tenho que mudar esta procedure, pois ela não previa o campo vendedor, correto? até beleza, mas aí depois que grava o followp gera uma lista com todos fllowups de um cliente, então, tem esta query para gerar a lista de followup. select F.*, U.NOME from FOLLOW_UP F , USUARIO U where U.USUARIO_ID = F.USUARIO_ID ORDER BY DATA_LANCAMENTO fui no dbgrid que exibe a lista e acrescentei o campo nome do vendedor, a partir daí gera o erro que eu citei.
-
Bom dia, alguém saberia me dizer o que pode estar errado nesta linha? CODE DmDentalita.FollowUp(StrToInt(Dbedit_codcliente.Text),' Clientes'); É ai que está dando o erro 'No argument for format '%S'' , este programa é de outro e eu comecei a manutenção nele agora. Valeu.
-
vlw micheus, funcionou como eu esperava
-
olá Micheus, primeiro obrigado pela atenção e .. bem usei o termo flag, mas minha duvida era quanto ao fato de o cliente enviar para o servidor uma mensagem pra ser repassada a outro usuario ou se pode ele enviar direto pra outro usuario conectado, neste ultimo caso o servidor só serve pra controlar as conexões , mas se tiver que enviar ao servidor terá que informar qual usuario, mas de acordo com a sua dica acho que é só fazer algo parecido com o que você disse, mas informando o servidor se é pra ele ou pra outro usuario e lógico informando qual. Assim ta certo? Se for pro servidor, a mensagem, terei que ter outro tipo de indice, pois se for uma mensagem pra um operador visualizar tipo, perguntado se tem algum produto e o operador lê e responde.... mas, se for pro servidor executar algo sem intervenção do operador,como repassar a mensagem a outro usuario, não tem porque esta mensagem ser exibida na tela do servidor. c acha que ta certo ?
-
opa, vlw jhonas, vou analizar e qualquer coisa venho perturbar novamente!
-
bom dia pessoal, eu to fazendo um programinha simples com sockets, aproveitando o exemplo do micheus e a comunicação entre os clientes e o servidor está funcionando, mas quero que os clientes se comuniquem, neste caso, um cliente envia uma mensagem ao servidor que repassa ao cliente que eu desejo que receba esta mensagem, certo? minhas duvidas são: 1- coloquei um combobox no cliente para ele poder selecionar o cliente que receberá a mensagem, porém não to conseguindo fazer com que o servidor envie a lista dos clientes conectados pra este que acabou de se conectar atualizar seu combo e quando um se desconecta também tem que ser atualizado o combo dos que permanecem conectados. 2- quando o servidor receber a mensagem vai tratar e se não for pra ele envia para o destinatario, aí devo por um flag pra cada posição do combo do cliente e de acordo com o selecionado quando o cliente enviar acrescento na mensagem este flag (teria que ter um pro server também ) para o servidor saber pra quem é a mensagem? ou outro jeito? espero ter sido claro e se alguém puder me ajudar, agradeço.