
.Léo
Membros-
Total de itens
7 -
Registro em
-
Última visita
Sobre .Léo

- Data de Nascimento 18/03/1988
Contatos
-
MSN
leonline935@hotmail.com
-
ICQ
0
Perfil
-
Gender
Male
-
Location
Santa Isabel / São Paulo
.Léo's Achievements
0
Reputação
-
Ajuda pra criar Form com pesquisa em SQL entre intervalo de Datas
pergunta respondeu ao .Léo de .Léo em Delphi, Kylix
Classifico esse tópico fechado pois o meu problema inicial foi resolvido com a ajuda do pessoal do forum... O problema novo descrito acima será solucionado em um tópico novo que irei abrir.... Fica os meus reais agradecimentos a todos que particparam com sua ajuda. :rolleyes: -
Ajuda pra criar Form com pesquisa em SQL entre intervalo de Datas
pergunta respondeu ao .Léo de .Léo em Delphi, Kylix
Então esse conjunto de códigos, você sugere colocar no depois do showmessage box? se for, no momento que der o clear ele irá eliminar o que está no adqfiltro... e na verdade to tentando é fazer o adqfiltro.sql.add receber alguém para o grid visualizar a filtragem! tentei com a variavel cmdsql, não deu certo, e se não me falha a memoria, eu cheguei a tentar ontem a noite isso dai e num funfou.. :huh: Pra ser sincero, qual a finalidade do APPEND??? vou analisar direitin... falou -
Ajuda pra criar Form com pesquisa em SQL entre intervalo de Datas
pergunta respondeu ao .Léo de .Léo em Delphi, Kylix
Fiz os testes e agora segue o log da situação atual: procedure TfrmComAss.btnFiltrarClick(Sender: TObject); var var_aux : boolean; cmdsql : string; begin var_aux:=false; cmdsql:='Select Prontuario from Lancamento where '; data1:=DateToStr(calDI.Date); data2:=DateToStr(calDF.Date); if edtPro.text<>'' then begin cmdsql := cmdsql + 'Data between "' + data1 + '" and "'+ data2 +'" '; var_aux := True; end else begin var_aux:=false; Showmessage('Favor, digitar o PRONTUÁRIO e escolher uma Data válida dd/mm/aaaa'); end; if (var_aux=true) then begin { adqfiltro.Close; adqfiltro.SQL.Clear; adqfiltro.SQL.Add(cmdsql); adqfiltro.Open; } adqfiltro.Active:=false; adqfiltro.SQL.Clear; adqfiltro.SQL.Append('Select * from Lancamento where Data BETWEEN ' + '''' + FormatDateTime('mm/dd/yyyy',calDI.Date) + '''' + ' AND ' + ''''+ FormatDateTime('mm/dd/yyyy',calDF.Date) + ''''); showmessage(adqfiltro.SQL.Text); adqfiltro.Active:=true; end; end; Com o código sugerido por vocês da certo, só queria saber como faria para inserir o que está ai bunitin no meu adqfiltro (Tadoquery) Tentei criar uma variavel (cmdsql : string) pra receber os dados de adqfiltro.sql.text e por sua vez a adqfiltro.sql.add(cmdsql) - não deu certo então... Se vocês souberem me da uma força que praticamente só falta isso, a minha grid exibir esse parametro acima pois no showmessage está correspondendo a seleção feita em meus TdataTimePicker. vlw pela ajuda abs a todos. -
Ajuda pra criar Form com pesquisa em SQL entre intervalo de Datas
pergunta respondeu ao .Léo de .Léo em Delphi, Kylix
____________________________________________________ Então realmente não expliquei direito oque aconteceu depois, foi mal pessoal, notei isso relendo os posts, meu problema inicial era de não conseguir fazer uma consulta entre duas datas, só que acabei conseguindo resolver por conta depois de uma última revisada, por isso que nem testei sua opção na hora, apesar que a dica do pessoal conta, é claro (e fico grato por isso de coração). Dai, o problema passou pra outro que estava filtrando apenas pelo Dia. Só que estou achando que deve ser algum problema de conversão do formato, que eu acho que tem um lance do formato americano ser mm/dd/yyyy e o brasileiro ser dd/mm/aaaa. estou crente que a dica do Jhonas possa ajudar com a sintaxe: procedure TForm1.Button1Click(Sender: TObject); begin Query1.Active := false; Query1.SQL.Clear; Query1.SQL.Append('SELECT CODCLI, DATA, COD_ATV '+ 'FROM Moviment WHERE DATA BETWEEN ' + '''' + FormatDateTime('mm/dd/yyyy',DateTimePicker1.Date) + ''''+' AND '+ ''''+ FormatDateTime('mm/dd/yyyy',DateTimePicker2.Date) + ''''); showmessage(Query1.SQL.Text); Query1.Active := true; end; No meu caso deve ficar assim: procedure TfrmComAss.btnFiltrarClick(Sender: TObject); begin adqFiltro.Active := false; adqFiltro.SQL.Clear; adqFiltro.SQL.Append('SELECT * '+ 'FROM Lancamento WHERE DATA BETWEEN ' + '''' + FormatDateTime('mm/dd/yyyy',calDI.Date) + ''''+' AND '+ ''''+ FormatDateTime('mm/dd/yyyy',calDF.Date) + ''''); showmessage(adqFiltro.SQL.Text); adqFiltro.Active := true; end; vou testar e tambem testarei a sua conforme citado, e tem razão, é tanto código que puts, a página ta lotando, foi mal aê povo. xD Agradeço a ajuda de todos! -
Ajuda pra criar Form com pesquisa em SQL entre intervalo de Datas
pergunta respondeu ao .Léo de .Léo em Delphi, Kylix
Oh Douglas, td bem contigo? então você fez em uma TQuery normal ou em um tADOQuery? O cdsOcorre seria o que? Desculpas pela ignorancia no assunto. srsrsrs Vou tentar utilizar seu exemplo, pois, fiquei muito feliz em ter conseguido uma solução do meu outro problema que era conseguir a filtragem e agora que consigo o nenem filtra só pela data.... to sem sorte nessas duas semanas.. srsrsr vlw cara... aguardo uma resposta sua. -
Ajuda pra criar Form com pesquisa em SQL entre intervalo de Datas
pergunta respondeu ao .Léo de .Léo em Delphi, Kylix
Vlw Jhonas agradeço muito pela sua paciencia em ler meu problema e procurar uma solução, só que acabei fazendo diferente antes de ver sua resposta e deu certo por um instante, saca só... Em vez de dois Tedit para inserção da data inicial e data final para pesquisa no Field Data da Table Lancamento, coloquei dois TDataTimePicker no lugar e como a propriedade que ele armazena o valor escolhido é o date fiz o seguinte: procedure TfrmComAss.btnFiltrarClick(Sender: TObject); var var_aux : boolean; cmdsql : string; begin var_aux:=false; cmdsql:='Select * from Lancamento where '; data1:=DateToStr(calDI.Date); //Primeiro TdateTimePicker data2:=DateToStr(calDF.Date); //Segundo TdateTimePicker if edtPro.text<>'' then begin cmdsql := cmdsql + 'Data between "' + data1 + '" and "'+ data2 +'" '; var_aux := True; end else begin var_aux:=false; Showmessage('Favor, digitar o PRONTUÁRIO e escolher uma Data válida dd/mm/aaaa'); end; if (var_aux=true) then begin adqfiltro.Close; adqfiltro.SQL.Clear; adqfiltro.SQL.Add(cmdsql); adqfiltro.Open; end; end; O código acima funciona legal, tipo, se não digitar um prontuário ele pede para digitar e com o prontuário digitado ele fará a busca do intervalo de datas entre os dois TdateTimePicker, daí o meu problema atual ( :unsure: ) Notei que os valores são pesquisados mais ele está ignorando o valores tipo mes e ano. Exemplo: Tenho um registro de 24/05/2009 Filtro da seguinte forma para ter o valor acima: # Correto# 01/01/2009 até 26/05/2009 # O Errado que está correto mais não deveria está (ohh céus)# 01/06/2009 até 26/12/2009 Praticamente a criança está filtrando apenas pelo dia, puts..... peço desculpas pela minha novisse mais quem puder ajudar apartir daqui, eu fico grato. Segue abaixo todo o meu PAS para eventuais consultas, um forte abraço e ótimo dia de serviço a nós: unit ConComAss; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, Grids, DBGrids, ExtCtrls, Buttons, ComCtrls, DB, ADODB, DBTables, Provider, jpeg; type TfrmComAss = class(TForm) Shape2: TShape; Label1: TLabel; DBGrid: TDBGrid; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; StatusBar1: TStatusBar; DBNavigator1: TDBNavigator; btnSair: TBitBtn; adqFiltro: TADOQuery; DataSource: TDataSource; edtPro: TEdit; adqFiltroNome: TStringField; adqFiltroCodigo_Lancamento: TAutoIncField; adqFiltroCodigo_Comercio: TIntegerField; adqFiltroProntuario: TWideStringField; adqFiltroDescricao_Item: TWideStringField; adqFiltroQtas_Vezes: TIntegerField; adqFiltroValor: TBCDField; Label6: TLabel; adqFiltroComercio: TStringField; dblNome: TDBLookupComboBox; Image1: TImage; CalDI: TDateTimePicker; CalDF: TDateTimePicker; BitBtn2: TBitBtn; adqFiltroData: TWideStringField; procedure BitBtn2Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure btnSairClick(Sender: TObject); private { Private declarations } public //declaração de duas variaveis que serao publicas var data1, data2 : string; // As variáveis serão públicas pois irei utilizá-las em Forms futuros. end; var frmComAss: TfrmComAss; implementation uses Banco; {$R *.dfm} procedure TfrmComAss.btnFiltrarClick(Sender: TObject); var var_aux : boolean; cmdsql : string; begin var_aux:=false; cmdsql:='Select * from Lancamento where '; data1:=DateToStr(calDI.Date); data2:=DateToStr(calDF.Date); if edtPro.text<>'' then begin cmdsql := cmdsql + 'Data between "' + data1 + '" and "'+ data2 +'" '; var_aux := True; end else begin var_aux:=false; Showmessage('Favor, digitar o PRONTUÁRIO e escolher uma Data válida dd/mm/aaaa'); end; if (var_aux=true) then begin adqfiltro.Close; adqfiltro.SQL.Clear; adqfiltro.SQL.Add(cmdsql); adqfiltro.Open; end; end; procedure TfrmComAss.btnSairClick(Sender: TObject); begin //Fechamento do banco sql na hora de sair do Form - Evita de Dados corromperem adqfiltro.SQL.Clear; adqfiltro.Close; close; end; procedure TfrmComAss.FormShow(Sender: TObject); begin dmMain.adotLanVen.IndexFieldNames := 'Prontuario'; //Campo Sendo habilitado para Pesquisa/Localização end; end. Abs... -
Ajuda pra criar Form com pesquisa em SQL entre intervalo de Datas
uma questão postou .Léo Delphi, Kylix
Bom dia pessoal, esse é o meu segundo tópico criado em foruns na net e fico feliz em usar este recurso. 8) Minha dificuldade está em criar um Form em Delphi 2006 para pesquisa em um ADOQUERY que puxa os dados da tabela Lancamento, a tabela Lancamento está em um banco MDB chamado bdsis.mdb e dentro da tabela Lancamento tenho um campo chamado Data do tipo Data/hora. No form que estou criando de nome frmConComAss tem o edit (edtprontuario) e dois TDateTimePicker (aquele combobox que quando clicamos e aparece um calendário bem bacana). No SQL do ADOQUERY tem a seguinte instrução Select * from Lancamento order by Data desc, assim será visualizado no TOPO o ultimo REG do Lancamento. No bitbutton que quero filtrar pelo PRONTUARIO E LOGO EM SEGUIDA PELO INTERVALO DAS DATAS INICIAL E FINAL ESCOLHIDAS PELO calDI (componente TDateTimePicker DATA INICIAL) E calDF (componente TDateTimePicker DATA FINAL) tem a seguinte instrução: var sql_txt: string; flag_aux: Boolean; //irá auxiliar na execução dos demais codigos begin //Inicio da condição para filtragem do PRONTUARIO flag_aux := False; sql_txt := 'Select * from Lancamento where '; //A variavel sql_txt recebe Declaração SQL if edtPro.text<>'' then begin sql_txt := sql_txt + 'Prontuario = "' + edtPro.text + '" '; flag_aux := True; end else begin flag_aux:=false; Showmessage('Campo vazio, favor, digitar um PRONTUÁRIO válido'); end; //Até aqui está ok //####################MEU PROBLEMA COMEÇA AQUI ########################## if calDI.date <> '' then begin if flag_aux=true then sql_txt := sql_txt + 'and data >= "' + calDI.date + '" '; end; if calDF <> '' then begin if flag_aux=true then sql_txt := sql_txt + 'and data <= "' + calDF.date + '" '; end; //####################MEU PROBLEMA TERMINA AQUI ############################ //Instrução para abertura do MEU ADOQUERY de name adqfiltro if (flag_aux=true) then begin adqfiltro.Close; adqfiltro.SQL.Clear; adqfiltro.SQL.Add(sql_txt); adqfiltro.Open; end; A instrução acima funciona perfeitamente quando digito apenas o prontuário e me mostra em meu dbgrip todos os reg correspondentes. Entretanto não estou conseguindo filtrar quando digito o PRONTUÁRIO e escolho a Data inicial e a Data final, pois me reportar um erro de dados incompatíveis entre minha variável sql_txt e o meus componentes calDI e calDF... :huh: tentei criar duas variáveis publicas chamadas data1 e data2 do tipo string, dai eles receberiam os valores assim: data1:=DateToStr(calDI.date); // onde converto o valor Data em string pra ser aceito na variável sql_txt data2:=DateToStr(calDF.date); daí ficaria assim if calDI.date <> '' then begin if flag_aux=true then sql_txt := sql_txt + 'and data >= "' + data1 + '" '; end; if calDF <> '' then begin if flag_aux=true then sql_txt := sql_txt + 'and data <= "' + data2 + '" '; end; Mesmo assim da o erro de dados incompatíveis... Se precisar de mais detalhes, favor perguntar e desde já agradeço a ajuda de todos. Abs e espero que vocês possam me ajudar, sou novato e sei o básico em SQL e Delphi :unsure: