-
Total de itens
227 -
Registro em
-
Última visita
Tudo que João Paulo Taraciuk postou
-
(Resolvido)Evento OnClick em ítem de coluna ListView
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Delphi, Kylix
Estou fazendo algo mais ou menos assim: var lstitmItem: TListItem; begin ListView1.ShowColumnHeaders := true; lstitmItem := ListView1.Items.Add; lstitmItem.SubItems.Add(Edit1.Text); lstitmItem.SubItems.Add(Edit2.Text); lstitmItem.SubItems.Add(Edit3.Text); Coloquei o código que você sugeriu no evento OnClick do ListView, mas ao clicar ele dá access violation. Imagino que seria este mesmo o procedimento, mas não sei porque não está dando certo, quando eu deixo a opcao ROWSELECT do listview como true, não aparece a msg de erro, porém ele mostra o número 1 nos 2 edits que deveriam receber o número da coluna e da linha. -
(Resolvido)Evento OnClick em ítem de coluna ListView
uma questão postou João Paulo Taraciuk Delphi, Kylix
Boa tarde Estou realizando uma listagem de ítens em um listview, e na penúltima coluna, coloquei um ícone de exclusao e na última um de edicao dos dados da linha, gostaria que ao clicar na coluna do ícone de exclusao, aparecesse uma mensagem de exclusao daquela linha e simplesmente apagasse ela, e ao clicar no editar, habilitasse para habilitar os dados da linha, ou seja, quero saber se tem como eu descobrir que linha e coluna do listview eu cliquei. Se alguém já fez um procedimento parecido e quiser me dar uma dica, eu agradeço. -
Boa tarde Eu estou montando um programinha de presencas,uma lista de chamadas de cursos, tenho as tabelas: TabCurso: codCurso Data TituloCurso TabPresencas CodAluno NomeAluno Presente - Verdadeiro/falso O que eu precisava é que me mostrasse no DBGrid algo mais ou menos assim: Aluno -------- 28/09/09 -------- 30/09/09 -------- 01/10/09 Pedro -------- Presente --------- Ausente ---------- Presente Ana ---------- Ausente -----------Presente --------- Presente Maria --------- Ausente ---------- Ausente -----------Presente Como eu poderia fazer este select, para que me traga os resultados separados por data ?
-
Somar no Group Header Quick Report
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Delphi, Kylix
No Expression da QRExpr eu coloco o nome da group? que eu tentei fazer isso e diz que é uma função desconhecida. -
Estou montando um relatório que seria algo parecido com um balancete, agrupando os dados por mês e, como em um balancete, gostaria que aparecesse a soma dos dados referentes aquele período no GroupHeader mas não estou conseguindo fazer com que seja realizada a soma antes de ser impresso no Quick os valores abaixo, então não aparece nada Qual a maneira recomendada para se fazer isso ?
-
Bo noite pessoal, gostaria de saber se tem uma maneira prática de evitar que s crie nós com nomes repetidos em um TreeView, pois criei um para apresentação de datas em forma de árvore, seria mais ou menos isso: Tenho a tabela de contas a receber, então coloquei para aparecer no nó 1 o ano, no 2º nó o mes daquele ano e no 3º nó os dias daquele mes, fiz com 3 selects, um para os anos, outro pra meses e outro pra dias, mas para evitar que tendo 2 lancamentos para o mesmo dia sejam criados 2 nós, eu estou controlando por variável: "se não tiver um dado igual ao que está na query, crie o nó". Gostaria de saber se tem uma maneira mais pática de se fazer isso. a estrutura do Treeview fica assim: -2006 - -|.....02/2006 - - - - - |..........01/02/2006 - - - - - |..........15/02/2006 -2008 - -|.....01/2008 - - - - -|...........10/11/2008 - - - - -|...........15/12/2008 - - - - -|...........21/12/2008 De que forma poderia ser feita essa verifcação ?
-
Dá uma olhada se algum desses lhe ajuda http://under-linux.org/wiki/index.php/Tuto...mysql-em-cadeia http://dev.mysql.com/doc/refman/4.1/pt/rep...tion-howto.html De repente, poderias colocar a sua base de dados num servidor WEB também.
-
Pode ser o INNER JOIN como nosso amigo Alexandre Neves indicou ou pode ser também com WHERE, que ficaria mais ou menos assim: 'Select c.codcliente, c.nomecliente, e.endereco, e.codcliente from clientes c, enderecos e WHERE (c.codcliente=e.codcliente)'
-
(Resolvido) Select com data Delphi + Access
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Delphi, Kylix
Olá Jhonas, deu certo aqui assim, seguindo a sua dica de formatar a data antes, mas só foi, colocando o cerquilho: procedure TForm1.Button1Click(Sender: TObject); var s, s1 : string; begin s := formatdatetime('mm/dd/yyyy', StrToDate(MaskEdit1.Text)); s1:= formatdatetime('mm/dd/yyyy', StrToDate(MaskEdit2.Text)); Query1.Active := false; Query1.SQL.Clear; Query1.SQL.append('SELECT * FROM Produtos ' + 'WHERE DATA BETWEEN ' + '#' + s + '#' + ' AND ' + '#' + s1 + '#' ); Query1.Active := true; end; Cara, muito obrigado pela disposição e pela atenção. Abraço!!! -
(Resolvido) Select com data Delphi + Access
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Delphi, Kylix
Olá Jhonas, coloquei o selectcomo sugerido, mas retorna o erro "Tipo de dados incompativel na expresão do critério" o select ficou assim: procedure Tfrm_cadanimais.Filtro; begin ShortDateFormat:='dd/mm/yyyy'; with ADOQueryFiltro do begin Active:=False; SQL.Clear; SQL.Add('Select a.id_animal, a.id_cliente, a.nome_animal, a.especie, a.raca,'+ 'a.cor, a.data_nascimento, a.sexo, a.condicao, c.codigocli, c.nomecli, c.telefone,'+ 'e.id_especie, e.especie, r.id_raca, r.raca from animais a, clientes c,'+ 'especie e, racas r where (c.codigocli=a.id_cliente)and(a.especie=e.id_especie)and(a.raca=r.id_raca)' + ' and a.data_nascimento BETWEEN ' + '''' +MaskNascFiltro.text+ '''' + ' AND ' + '''' +MaskFinalFiltro.text+ '''' ); Active:=True; end; end; Os MaskEdit estão com 4 dígitos no ano. O que poderia ser ? -
(Resolvido) Select com data Delphi + Access
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Delphi, Kylix
Ele dá a mensagem "Data type mismatch in criteria expression" acredito que isso se deva ao fato de eu estar jogando uma string como parametro para uma data, mas eu tentei assim também Result:=Result +'and(a.data_nascimento between (#'+ QuotedStr(MaskNasc.Text)+' #)and(#'+QuotedStr(MaskFinal.Text)+'#))'; Mas aí retorna a mensagem: "Sintax error in date in query expression 'and(a.data_nascimento between (#'01/01/98'#)and(#'31/12/98'#))'" De que forma poderia ser feito, como se fosse colocar diretamente o conteúdo de um maskedit no parametro do select? assim: SQL.Add('Select a.nome, a.telefone, a.codigo, a.data_nascimento, a.codcidade, b.codcidade, b.cidade'+ ' from clientes a, cidades b where (a.codcidade=b.codcidade)and (a.data_nascimento = '+ MaskEdit1.text+'))'; -
Olá pessoal, estou encontrando dificuldades para realizar um select levando data como parametro, assim, eu estou jogando os dados numa função que retorna string, para realizar o filtro com várias opções de consulta, a função está assim: Function CamposFiltro(): String; function Tfrm_cadastro.CamposFiltro: String; begin if(Trim(Edtnome.Text)<>'')then Result:=Result + 'and(a.nome=' + QuotedStr(EdtNome.Text)+')'; if(MaskNasc.Text<>' / / ')and(MaskFinal.Text<>' / / ')then Result:=Result +'and(a.data_nascimento between ('+ QuotedStr(MaskNasc.Text)+') and('+QuotedStr(MaskFinal.Text)+'))'; end; Mas quando vai para fazer a esquisa apresenta erro, o select está assim: procedure Tfrm_cadastro.Filtro; begin ShortDateFormat:='dd/mm/yyyy'; with ADOQueryFiltro do begin Active:=False; SQL.Clear; SQL.Add('Select a.nome, a.telefone, a.codigo, a.data_nascimento, a.codcidade, b.codcidade, b.cidade'+ ' from clientes a, cidades b where (a.codcidade=b.codcidade)'+ CamposFiltro()+')'; Active:=True; end; end;
-
(Resolvido) Palavras com acentos em Select
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Access
Olá pessoal Consegui resolver o problema da pesquisa com ou sem acentos, vou colocar a função que criei, se alguém passar pelo mesmo problema: Bom, crio a função: Function TratarAcentos(txt: String): String; function Tfrm_Clientes.TratarAcentos(txt: String): String; var i: Integer; begin if(Trim(txt))<>''then begin for i:=0 to Length(txt)do begin case txt[i] of 'a', 'á', 'â', 'ã', 'à', 'ä', 'å', 'Á', 'Â', 'Ã', 'À', 'Ä', 'Å' : txt[i]:= '_'; 'e', 'é', 'ê', 'è', 'ë', 'É', 'Ê', 'È', 'Ë' : txt[i]:= '_'; 'í', 'î', 'ì', 'ï', 'Í', 'Î', 'Ì', 'Ï' : txt[i]:= '_'; 'ó', 'ô', 'õ', 'ò', 'ö', 'Ó', 'Ô', 'Õ', 'Ò', 'Ö' : txt[i]:= '_'; 'ú', 'û', 'ù', 'ü', 'Ú', 'Û', 'Ù', 'Ü' : txt[i]:= '_'; 'ç', 'Ç' : txt[i]:= '_'; end; Result:=txt; end; end; end; Aí chamei ela assim no select: procedure Tfrm_Clientes.Busca; begin with DataModule1.ADOQueryClientes do begin Active:=False; SQL.Clear; SQL.Add('Select * from Clientes where nome like :a'); Parameters.ParamByName('a').Value:=TratarAcentos(edt_pesquisa.Text)+ '%'; Active:=True; end; end; Assim, colocando na Public posso chamar ela em qualquer form, só colocando o nome do edit. Mas, como nem tudo são rosas, a funcao do '_'(Underline) é ser um coringa, ou seja, ele substitui o caracter naquela posicao por qualquer um, e pode acontecer o seguinte, no caso de ter que pesquisar por exemplo cão e no banco tenha cão e Chow, por exemplo, vai vir as duas na busca quando digitar cao, devido ao fato de o 'a' virar qualquer letra, vai virar um h, nesse caso. Mas isso resolve o meu problema por hora. Abraço!!! -
Como instalar o componente zeos
pergunta respondeu ao Alessandra (Jundiai) de João Paulo Taraciuk em Delphi, Kylix
Abra o grupo de projetos ZeosDbo.groupproj na pasta .\packages\delphi11; Vá no menu Project > Compile All Projects; No Project Manager, abra o menu suspenso de ZComponentDesign110.bpl e selecione Install Componentes instalados, agora falta incluir o diretório dos arquivos compilados (.dcu) no Library path (menu Tools > Options > Environment Options > Delphi Options > Library - Win32) Mas se tu quiseres, podes utilizar a ADO, da paleta dbGo, que se for atualizar o seu Delphi posteriormente, não vai precisar reinstalar o Zeos novamente, sem falar que é um componente realmente "nativo" do Delphi. Tenta aí, eu instalei o Zeos assim, agora, quanto ao QReport, teria que dar uma pesquisada, já vi isso em algum lugar, só não me recordo onde. -
(Resolvido) Palavras com acentos em Select
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Access
Olá Leandro, cara, eu tente aqui, mas não consegui transformar essa funcao em pascal, algumas funcoes do VB não tenho no Delphi... -
Boa tarde Estou trabalhando em uma aplicação feita em Delphi com base de dados em Access e estou encontrando dificuldades no Select no que diz respeito a palavras acentuadas serem buscadas sem digitar o acento, ex: José e Jose, não e não. Como eu poderia contornar esse problema no Delphi?
-
(Resolvido) Relatório Diário de Caixa Entrada/Saída
pergunta respondeu ao Tatiane.InterArt de João Paulo Taraciuk em Delphi, Kylix
Olá Jhonas, infelizmente não deu certo, dessa maneira, se a segunda coluna tem mais dados que a primeira, na visualização, repete-se o último dado da primeira até que a segunda coluna acabe e, quando manda imprimir, seja em impressora pdf ou normal, saem os dados da primeira coluna corretamente, mas os dados da segunda coluna imprime repetido od dados da última coluna Visualiza assim: ---Credito ---------------|----------------Débitos lanc 1----------1,50 ----|------------Lanç 1---------15,00 lanç 2----------2,00 ----|------------Lanç 2----------8,50 lanç 2----------2,00 ----|------------Lanç 3----------1,00 lanç 2----------2,00 ----|------------Lanç 4----------0,88 E imprime assim: ---Credito ---------------|----------------Débitos lanc 1----------1,50 ----|------------Lanç 4----------0,88 lanç 2----------2,00 ----|------------Lanç 4----------0,88 A Unit está assim: procedure Tfrm_relatCaixaDiario.QRSubDetail1NeedData(Sender: TObject; var MoreData: Boolean); begin MoreData:= not(QueryCreditos.Eof) or not(QueryDebitos.Eof); end; procedure Tfrm_relatCaixaDiario.QRSubDetail1BeforePrint( Sender: TQRCustomBand; var PrintBand: Boolean); begin if not QueryCreditos.Eof then begin QRDBText1.Enabled := True; QRDBText2.Enabled := QRDBText1.Enabled; end; if not QueryDebitos.Eof then begin QRDBText3.Enabled := True; QRDBText4.Enabled := QRDBText3.Enabled; end; end; procedure Tfrm_relatCaixaDiario.QRSubDetail1AfterPrint( Sender: TQRCustomBand; BandPrinted: Boolean); begin QueryCreditos.Next; QueryDebitos.Next; end; Enfim, não saiu ainda. Se não houver jeito de fazer com o Quick Report, vou ter que fazer na mão, nem que seja com o canvas. Obrigado pela atenção... -
(Resolvido) Relatório Diário de Caixa Entrada/Saída
pergunta respondeu ao Tatiane.InterArt de João Paulo Taraciuk em Delphi, Kylix
Olá, retornando a este tópico antigo, eu fiz conforme o exemplo, funcionava bem, para visualizar os dados, mas ocorreu que foi necessário imprimir os dados e os dados da segunda coluna não estão sendo impressos, aparecem para visualizar o relatório, mas quando manda imprimir não sai a segunda coluna, somente a primeira, acho que poderia ser nesse ponto que está ocorrendo o problema. acho que o problema está nesse ponto procedure Tfrm_relatCaixaDiario.QRSubDetail1BeforePrint( Sender: TQRCustomBand; var PrintBand: Boolean); begin QRDBText1.Enabled := not QueryCreditos.Eof; QRDBText2.Enabled := QRDBText1.Enabled; QRDBText3.Enabled := not(QueryDebitos.Eof); QRDBText4.Enabled := QRDBText3.Enabled; end; O que poderia ser feito para que seja possível imprimir os dados das duas colunas ? Estou utilizando AdoQuery, Delphi 7 e banco Access... -
Eu estou encontrando dificuldades para realizar uma exportação de uma base de dados Postgres, eu copiei a pasta Postgres inteira do Arquivo de Programas , que, segundo a pasta dentro desta, está no 8.2, aí, instalei no meu micro a versão 8.3.7, e estou tentando registrar essa base de dados que havia copiado da seguinte maneira. Eu paro o serviço Server do Postgres e colo a pasta data substituindo a que foi pré-instalada, mas depois disso, ele não inicia mais o serviço Server do banco, tentei realizar várias vezes, mas não estou conseguindo. Como eu posso fazer para abrir essa base de dados copiada fisicamente ? Eu instalei o EMS para registrar a base mais facilmente...
-
Olá pessoal Estou encontrando dificuldades para realizar a seguinte rotina Quero colocar um TreeView na minha aplicação onde apareça os anos, meses e dias que existem pedidos na tabela. Eu tenho o campo data de emissão na tabela, e quero que coloque como nós Principais os Anos que houverem dados na tabela, como nós secundários os meses que houverem lançamentos e nós terciários os dias desses meses que tiverem lançamentos, mas não estou conseguindo realizar essa tarefa. Se alguém puder me dar uma dica eu agradeço.
-
Olá A maneira mais simples de fazer isso seria com a ADOConnection, coloca uma ADOConnection no seu projeto, dá dois cliques sobre o componente, com a opção "Use Connection String" selecionada, pressiona o botão Build..., na aba provider, se for o banco de dados access 2003 ou anterior, seleciona a opção "Microsoft Jet 4.0 OLE DB Provider", clica no botão next, e no campo "Select or enter a Database Name" coloca o caminho da sua base de dados ou clica no botão ... para abrir a caixa de busca, aí clica em Test Connection e ve se deu certo aparece a mensagem "Test Connection Suceeded" dá OK, OK, OK e está feito, é só colocar ao adoquery e tudo mais o que vai ser necessário.
-
Bom dia Esto emcontrando dificuldades para realizar um select onde o resultado vai ser apresentado no Quick Report, eu preciso fazer o select comparando dados de duas tabelas, as tabelas são a de Pedidos e a de Produtos, é assim na tabela de pedidos tem 2 campos que pode ser incluído serviços, aí é que está o problema, o select está assim Select p.CodPed, p.data, p.quantservico1, p.descservico1, p.valservico1, p.quantservico2, p.descservico2, p.valservico2, i.codped, i.qtdproduto, i.descricaoprod, i.codigoprod from Pedidos p, Itens i where (p.CodPed=i.codped)and(p.data between :a and :b) order by p.codped, p.data Ocorre que em alguns casos tem somente os serviços, e como está sendo feita uma comparação com produtos no Where (p.CodPed=i.CodPed), não aparece este pedido no relatório, pois quando não há produtos, não haverá codped referente ao mesmo na tabela de ítens. Os serviços eu estou jogando na GroupFooter do relatório, lista primeiro os produtos que tem quantidade maior, depois, se tiver serviços aparece os mesmos, mas essa situação não aparece nem o pedido. Como poderia fazer esse select de forma que aparecesse no Quick Report mesmo que não exista a referencia na tabela de ítens ?
-
(Resolvido)Localizar e Substituir linha
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Delphi, Kylix
É exatamente isso, o que eu quero fazer, é quando tiver mais de um produto na nota, ele vem ordenado pela alíquota, eu quero é somente colocar outro valor antes do 0000, somente mudar a isenta para uma posição abaixo. Ocorre que o sistema que gera o sintegra não é nosso, eu preciso fazer essa alteração para importar para o sistema com o qual a gente trabalha, e, no sistema que trabalhamos, se tiver uma nota com mais de uma alíquota, e na primeira tiver 0000(isenta), dá erro na importação, por isso teria que ter o produto com alíquota diferente de 0 antes. O que eu estou tentando fazser é o seguinte, abro o arquivo, jogo para um ClientDataSet, insiro os dados Número da nota, linha, cfop, alíquota em uma tabela do access, aí eu faço um select nessa tabela, trazendo somente os dados que contém mais de uma alíquota na nota, jogo esses dados em outro ClientDataSet, aí eu já tenho as linhas que precisam ser trocadas as posições, porém não estou conseguindo fazer isso, alterar duas linhas de uma só vez, eu tenho no ClientDataSet2 o número da linha que precisa ser alterada. -
(Resolvido)Localizar e Substituir linha
pergunta respondeu ao João Paulo Taraciuk de João Paulo Taraciuk em Delphi, Kylix
O Arquivo tem estrutura assim 0000835910P000000000249800000000000000000000000000000000000000000000000024980000 0000835910P000000000109200000000000000000000000000000000000000000000000010921700 0000845102P000000000080100000000008010000000000200000000000000000000000000002500 0000845405P000000001280000000000000000000000000000000000000000000000000128000000 0000855405P000000001139600000000000000000000000000000000000000000000000113960000 0000865102P000000000792000000000079200000000001980000000000000000000000000002500 0000865405P000000000220000000000000000000000000000000000000000000000000022000000 0000875102P000000000013600000000001360000000000023000000000000000000000000001700 0000875405P000000001040700000000000000000000000000000000000000000000000104070000 0000885102P000000000154000000000015400000000000262000000000000000000000000001700 Vai ter que ficar assim: 0000835910P000000000109200000000000000000000000000000000000000000000000010921700 0000835910P000000000249800000000000000000000000000000000000000000000000024980000 0000845102P000000000080100000000008010000000000200000000000000000000000000002500 0000845405P000000001280000000000000000000000000000000000000000000000000128000000 0000855405P000000001139600000000000000000000000000000000000000000000000113960000 0000865102P000000000792000000000079200000000001980000000000000000000000000002500 0000865405P000000000220000000000000000000000000000000000000000000000000022000000 0000875102P000000000013600000000001360000000000023000000000000000000000000001700 0000875405P000000001040700000000000000000000000000000000000000000000000104070000 0000885102P000000000154000000000015400000000000262000000000000000000000000001700 O que está em negrito seria o número do documento, o que eu preciso, é que, por exemplo no documento 000083, no final da linha tem na linha de cima 0000 e na linha seguinte tem 0017, e o arquivo sempre vai vir assim, levando os 4 últimos dígitos em ordem crescente, o que eu preciso é colocar o 0017 antes do 0000, apenas trocar a linha dos dois, quando for o mesmo número de documento, os outros está certo, o que teria que mudr seria somente este, repare que no 0084 o 0025 no final da linha vem antes do 0000, eu estou tentando fazer algo como: var txt: TStrings; a,c, linha, str1, str2: String; b :TextFile; begin AssignFile(b, 'C:3IC0131.TXT'); Reset(b); txt := TStringList.Create; txt.LoadFromFile('C:3IC0131.TXT'); a:=txt[StrToInt(Edit1.Text)-1]; c:=txt[StrToInt(Edit1.Text)]; while not Eof(b)do begin str1:=txt.Strings[strtoint(Edit1.Text)-1]; str2:=txt.Strings[strtoint(Edit1.Text)]; if(Pos(a, linha))=1 then begin Delete(a, 1, 126); Insert(str2, a, 1); txt.Text:=StringReplace(txt.Text, linha, a, [rfReplaceAll]); Readln(b, linha); end; if(Pos(c, linha))=1 then begin Delete(c, 1, 126); Insert(str1, c, 1); txt.Text:=StringReplace(txt.Text, linha, c, [rfReplaceAll]); Readln(b, linha); end; Readln(b, linha); end; CloseFile(b); txt.SaveToFile('C:3IC0131.TXT'); No caso eu estou colocando o número da primeira linha no edit1.text manualmente, mas mesmo assim, ele coloca o mesmo valor nas duas linhas, onde eu posso mexer nesse código para que ele simplesmente troque, coloque a linha de baixo antes da de cima? Depois eu vou tentar pegar o número da linha de um ClientDataSet, ao invés de digitar no Edit. -
Boa noite Estou procurando uma forma de localizar determinada linha de texto em arquivo texto e trocar a ordem das linhas, seria algo mais ou menos assim: 00011 1212121233330000N 00011 1213121233330000N 00011 1213121233330017N O que está em negrito por primeiro na linha seria o número do documento, e o que está no final da linha seria o que eu tenho que alterar, fazer o seguinte, como na segunda e na terceira linha, eu preciso jogar o valor diferente de 0000 por primeiro, mas isso no meio de um arquivo que pode ter até 2000 linhas ou mais. Seria assim, encontrar o número do documento, e o que for de mesmo número, ou seja, referente ao mesmo documento, e tiver dois valores diferentes no final da linha, eu tenho que fazer a troca, colocar o valor maior acima do menor no txt. Eu tentei ir jogando para um ClientDataSet, mas acabou não saindo como eu esperava, se alguém tiver uma dica de como eu poderia fazer isso, eu agradeço.