
Micheus
Veteranos-
Total de itens
3.189 -
Registro em
-
Última visita
Tudo que Micheus postou
-
(Resolvido) Como Salvar um campo atribuindo um caption nele e o v
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
robinhcne, já não lembro mais... Qual o bando de dados que você está utilizando? MySQL?Por acaso, você está trabalhando com triggers? Definiu algum valor default? Se não é no código, tem que estar no banco. Não há opção. -
(Resolvido) Gravar conteúdo de um memo num arquivo Texto
pergunta respondeu ao Eder de Micheus em Delphi, Kylix
Eder, este Memo.List eu não sei de onde saiu não, acho que você só se enganou. :D Mas o problema é que você tem que passar o String do memo para o TStringList. Faça assim, naquele exemplo do Churc: sl.Add(Memo1.Lines.Text); sl.Add(Memo2.Lines.Text); Text é a propriedade de TString (tipo da propriedade Lines do TMemo) que retorna um grande string contendo todas as linhas na lista. Abraços -
(Resolvido) Como Salvar um campo atribuindo um caption nele e o v
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
Ok. você tem o campo... Isso porque é o formulário que gera a parcela, certo?! Então, ainda não entendi aquela pergunta: Acontece o quê?Por acaso as parcelas estão sendo quitadas "automaticamente" quando você está gravando as parcelas recém geradas? Se for isto, então em algum lugar do seu programa isto deve estar sendo feito (definida uma data para o campo DTPGTO)... -
Voce está utilizando arquivos *.DBF (pelo que está em outro post), então acho que vai ser difícil obter muito deles através de instruções SQL, que são limitadas para este tipo de "banco de dados". dependendo do que você está fazendo, talvez seja uma opção popular uma tabela temporária. Cria ela com as colunas conforme você precisa e, então, você grava as informações de uma consulta nela (VPS) e depois grava ou atualiza dos dados com a outra consulta (VPE)
-
(Resolvido) Como Salvar um campo atribuindo um caption nele e o v
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
Bom, daí acho que já é uma questão de procedimento seu.Se você não tem um campo de data de pagamento para saber quando foram baixadas, que informação você está utilizando para indicar isto? :unsure: -
Pirambú!, veja se com as dicas contidas neste artigo - SQL Server - Criando banco, tabelas e acesso no Delphi - Parte II (leia a parte Acesso via ADO) voce consegue configurar sua conexão.
-
Renatosky, acho que você não notou, mas o 3º Destaque no início da página, tem um link para a área do Crystal Reports. Como por aqui (Delphi/Kylix) não é comum discussão sobre ele, vou mover seu tópico para lá, mas deixo o link aqui para o caso de alguém se habilitar a auxiliar. Assim, é possível que seu primeiro questionamento (passagem de parâmetros) possa ser mais facilmente resolvido. Abraços.
-
(Resolvido) Como Salvar um campo atribuindo um caption nele e o v
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
isto é um erro no SQL. Acho que, devido a este seu método exclusivo de gravação de dados, você terá que fazer o mesmo que você faz com os outros campos string: concatenar o caracter #39, tipo ... add (#39 + TxtCod.Text + #39); Add (#39 + tblPar.Fields[00].DisplayText + #39); // <========= AQUI ... É aquela história do "espírito da coisa", se no seu procedimento de gravação você vai precisar que o valor string contenha o #39, então já tem que cair a ficha. ;) Abraços -
Antes de mais nada, tente observar as regras do forum e até por questão de visualização, evite digitar todo o texto em caixa ALTA. Alexandre, foi descuido seu ou você quer realmente listar apenas um dos registros.Veja que você fala em AGRUPAR, mas se olharmos seu exemplo, no resultado que você pretende obter o ALEXANDRE tem TOTAL_NOTA = 100,00, enquanto que, se fosse para agrupar baseado no resultado da primeira tabela, deveria ser 200,00. Entretanto, no seu SELECT, você faz referência a FIRST, o que sugere que você quer realmente pegar apenas o 1ª registro, e neste caso, não faz sentido o uso de GROUP BY, já FIRST faz retornar apenas a primeira linha do resultado da consulta. Está confuso, não acha?! De qualquer forma, observe que você não utilizou qualquer função de agregação, tal como SUM, COUNT, MAX. Também, quando da utilização de GROUP BY, nesta cláusula devem constar todos os campos que estão definidos no SELECT menos os que correspondem a função de agregação.Por exemplo: SELECT CADMOV.data_mov, CADMOV.nota_fisc, VENDEDOR.NOME, SUM(CADMOV.Total_nota) AS Total_nota FROM (CADMOV INNER JOIN TIPOS ON CADMOV.tipo_oper = TIPOS.TIPO) INNER JOIN vendedor ON CADMOV.Cod_vend = vendedor.COD_vend GROUP BY CADMOV.data_mov, CADMOV.nota_fisc, VENDEDOR.NOME
-
(Resolvido) Como Salvar um campo atribuindo um caption nele e o v
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
Bom, eu não dei o caminho pelo FieldDefs, mas sim pela lista de campos via duplo no componente RxMemoryData. Se você fizer isto, vai encontrar as propriedade de que falei (DisplayFormat, não DataType). De qualquer modo, acabei falando besteira. Esta parte do texto que coloquei antes está errada (é... eu também erro :D): (...) Isto porque, sempre que você define uma formatação para na propriedade DisplayFormat de algum campo, ao obter seu valor no formato string, ou seja, utilizando ".AsString", a formatação é aplicada ao resultado. Na verdade, definindo uma formatação para na propriedade DisplayFormat de algum campo, é possível obter seu valor formatado através do método DisplayText. Assim, tendo criado o campo no RxMemoryData via procedimento de duplo click no componente (não através da sua propriedade FieldDefs), e definindo a formatação em DisplayFormat, na hora de atribuir o valor do campo parcela da tabela em memória (TblPar) para a lista de valores você utiliza o método DisplayText. Como no exemplo: ... with vvlr do begin clear; add (#39 + TxtCod.Text + #39); Add ( tblPar.Fields[00].DisplayText ); // <========= AQUI Add ( TiraMascara( FormatFloat( '#########,##', tblPar.Fields[02].AsCurrency ) ) ); ... Segue um exemplo em anexo também. Project1.zip -
colocando no Google: "proxies delphi"a 3ª resposta é: Migrando de Delphi 5 para o Delphi 6/7 Veja se isto lhe ajuda.
-
(Resolvido) Como Salvar um campo atribuindo um caption nele e o v
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
o procedimento seria o mesmo para visualizar no relatório. Mas... ... se você quer fazer deste jeito, então observe o seguinte:1 - você está utilizando uma tabela em memória, RxMemoryData, que tem um campo para parcela. Vejo que você está referenciando este campo com TbPar.Fields[00].AsInteger; Mas você deve ter criado o campo em design-time (aquele lance de duplo click no componente, Add para adicionar um novo field, provavelmente do tipo inteiro), então você tem como utilizar a propriedade DisplayFormat dele (nesta tabela em memória); 2 - você está movendo o valor do campo da tabela em memória para sua lista vvlr utilizando: Add(tblPar.Fields[00].AsString). Se você utilizar a propriedade DisplayFormat, como disse no item 1, quando você passar o valor da forma que faz (e que citei no item 2), automaticamente você estará gravando o texto "nª Parcela"! Isto porque, sempre que você define uma formatação para na propriedade DisplayFormat de algum campo, ao obter seu valor no formato string, ou seja, utilizando ".AsString", a formatação é aplicada ao resultado. Abraços -
(Resolvido) Imprimir Etiquetas no QuickReport
pergunta respondeu ao Recife de Micheus em Delphi, Kylix
Quando você define colunas no quickreport, ele faz a impressão uma coluna de cada vez, ou seja, imprime as bandas configuradas primeiro na coluna mais à esquerda até que encontre o fim da página, para depois passar a próxima coluna, começando novamente na parte superior e assim por diante, até concluir as colunas e avançar para outra página e começar tudo denovo. Muito provavelmente as bandas que você criou ocupam metade da página, ou o suficiente para que não caiba uma terceira etiqueta em uma coluna, motivo pelo qual você está vendo apenas 4 etiquetas em uma página. Seria isto o que ocorre? -
Eder, sem dúvida seria necessário dar margem ao processamento da tarefa de pintura do label, e isto deveria ser possível via chamada a Application.ProcessMessages conforme mencionou o Churc, mas parece que nem o seu timer está tendo chance de ser processado. Sabendo que o QuickReport executa chamadas para eventos nas bandas enquanto está sendo processado, talvez você possa colocar a chamada Application.ProcessMessages em um evento BeforePrint de alguma banda no seu relatório. Talvez isto funcione. ;) é uma base muito grande para tabelas Paradox. É hora de pensar em algo que seja um SGBD de verdade. Abraços
-
Renato faria, boa explicação, mas permita-me corrigir apenas o método que deve ser chamado para listagem dos dados. No seu exemplo, onde aparece Query1.ExecSQL deve ser utilizado Query1.Open. O método ExecSQL é utilizado para instruções SQL que não "retornam linhas", como INSERT, UPDATE, DELETE... Abraços
-
(Resolvido) Como Salvar um campo atribuindo um caption nele e o v
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
robinhcne, eu acredito que possa ser mais útil manter gravado o número da parcela. A questão visual, pode ser resolvida apenas com a formatação do campo na tabela. Supondo que você tenha o campo adicionado ao seu dataset, em modo design-time, abra seu dataset (duplo click), selecione o field em questão e vá até a propriedade DisplayFormat na janela Object Inspector e defina ela para "#0 ª parcela" (sem as àspas duplas, é claro). Simples assim! Abraços -
(Resolvido)Pesquisar Arquivos em Diretório, e salvar no BD
pergunta respondeu ao schaukoski de Micheus em Delphi, Kylix
schaukoski, o que deve ficar claro é o que exatamente você quer fazer com a imagem.Se você quer apenas mostrá-la em seu programa, então você vai utilizar apenas um TImage e carregar a imagem para ele com um LoadFromFile(nome_arquivo); Se você quer carregar novas imagens para seu banco de dados, em um campo BLOB, então você utiliza o TDBImage e associa o campo da tabela a ele e carrega a imagem para ele. Depois, quando você gravar os dados da tabela (chamar Post), a imagem será gravada. Mas, se você quer fazer um processo de "conversão/importação" onde quer passar estas imagens que estão em arquivos no seu disco, para uma campo BLOB no seu banco de dados, você poderia fazer uma rotina em que utilizar TFileStream e carrega a imagem para um objeto TJPEGImage (se forem jpg) e utiliza o método LoadFromStream do campo da tela referente a imagem, conforme dá para ver neste post. -
Eder, acredite se quiser, mas o Paradox usando o group by vai retornar uma linha de resultado com todos os campos nulos. :blink: Vai entender... Sabendo disto, e que deverá haver uma placa válida, você pode testar se o campo placa está nulo ou não. Também há meios de eliminar todos os Exit, basta estruturar o código utilizando if...then...else, veja sugestão: procedure TFormGrafAbaste.EncartaButton1Click(Sender: TObject); begin If DateTimePicker2.Date < DateTimePicker1.Date Then begin ShowMessage('Intervalo de datas Inválido, a data Inicial é maior que a data Final!'); DateTimePicker2.Date := DateTimePicker1.Date; end else If Combobox1.Text = '' Then Begin Showmessage('Selecione a Marca do Veículo.'); Combobox1.SetFocus; End else If Combobox2.Text = '' Then Begin Showmessage('Selecione a Filial do Veículo.'); Combobox2.SetFocus; End else begin Query1.Close; Query1.SQL.Text := 'SELECT sum(Abaste.KmPer) as Total1, Sum(Abaste.Litros) as Total2, '+ 'Sum(Abaste.ValorFinal) as Total3, Vei.Placa, Vei.Marca, Vei.Veiculo, Vei.Unidade, Vei.Tipo '+ 'FROM ABASTE, VEI '+ 'WHERE (ABASTE.DATA >= :DATAI) and (ABASTE.DATA <= :DATAF) AND '+ 'Abaste.CodVei = Vei.CodVei '+ 'and Vei.Marca = '+ QuotedStr(ComboBox1.text) + 'and Vei.Unidade = '+ QuotedStr(ComboBox2.text) + 'Group By Vei.Placa, Vei.Marca, Vei.Veiculo, Vei.Unidade, Vei.Tipo '+ 'Order By Vei.Placa'; Query1.ParamByName('datai').AsDate := DateTimePicker1.Date; Query1.ParamByName('dataf').AsDate := DateTimePicker2.Date; Query1.Open; if Query1.FieldByName('Placa').IsNull then // se a placa estiver nula, é sinal que não há resultado ShowMessage('Nenhum Registro Encontrado!') else frReport1.ShowReport; end; end;
-
O procedimento de modelagem de dados vai ajudá-lo justamente a definir que tabelas se relacionam com qual, que campos serão utilizados nesta relação, que tabelas de relacionamento (para resolução de uma relação N-N) deverão ser criadas. É uma boa idéia ter uma noção sobre o assunto para que possa modelar adequadamente seu banco de dados e evitar dor de cabeça no futuro. Segue um post com algumas referências:Modelagem de dados p.s. como a dúvida não está associada exatamente a programação Delphi, e você não citou o banco que utiliza, vou copiar o link deste Tópico para a seção Demais Bancos, onde mais alguém poderá lhe ajudar.
-
bom, para mostrar os lançamentos do dia você teria que filtrar na cláusula WHERE a data de pagamento = ao dia atual. Acredito que neste caso, filtrar o aluno seria algo opcional, já que provavelmente num determinado dia poderá haver um pagamento ou nenhum para tal aluno. Supondo que seja o dia atual e não uma data informada, você poderia fazer uma SQL mais ou menos assim: SELECT Parcela, Valor, Vencimento, Emissao, DtPgto FROM Lancamento WHERE DtPgto = current_date // current_date no FireBird retorna data atual no servidor caso você queira ainda filtrar o aluno, ou seja, o pagamento de determinado aluno no dia atual, basta acrescentá-lo ao "filtro" na cláusula WHERE: SELECT Parcela, Valor, Vencimento, Emissao, DtPgto FROM Lancamento WHERE DtPgto = current_date AND Aluno = <código do aluno> // ao montar seu código, você terá que concatenar o código, como já o fez no exemplo que você postou. parece-me um erro razoável. Por acaso, neste momento o seu TEdit - TxtCod não está com a propriedade Text "em branco"?! Então, "substitua" isto na sua consulta e veja como ela ficará. Aqui temos a linha que você monta no OnShow:QryCaixa.SQL.Text := 'Select Parcela,Valor,Vencimento,Emissao,DtPgto From Lancamento Where Aluno = ' + TxtCod.Text; sabendo que TxtCod.Text está com valor nulo (''), então será executado o Open com a instrução assim: QryCaixa.SQL.Text := 'Select Parcela,Valor,Vencimento,Emissao,DtPgto From Lancamento Where Aluno = '; Logo o parser vai entender que o comando está incompleto, já que depois do "=" não tem nada! Sugestão, se você for mostrar inicialmente por data, utilizando o 1º SQL que postei, você terá no DBGrid os dados do pagamento no dia. Então este seria o SQL que você colocaria no OnShow. Mas, se for filtrar ainda o aluno no dia, ou até independente do dia (se for o caso), então você deverá modificar sua cláusula WHERE de acordo com o que irá filtrar - poderia ser o 2º SQL que postei, por exemplo. Abraços
-
Jhonas, apenas salientando que o colega vms questionou sobre RichEdit e não mencionou nada sobre QuickReport, já que você indicou a ele utilizar os componentes QRLabel, QRMemo e QRDBText. Apenas para evitar qualquer entendimento incorreto por parte do mesmo. Mesmo assim, com relação a impressão de uma imagem sob um texto no quickreport, pode ser que este link seja útil: Imagem de Fundo no QuickReport (ref. Active Delphi). Abraços
-
vou ser obrigado a "plagiar" o Jhonas ;) :Erro de SQL dinâmico Código de Erro SQL = -206 Coluna desconhecida L.Aluno Aparentemente não existe uma coluna com o nome Aluno na tabela de alias L, ou seja, Lancamento. Como dica, segue um link que pode lhe ajudar com as traduções: AltaVista Babel Fish
-
NiceBoy, não sei afirmar, mas talvez se você carregar o Explorer (c:\windows\explorer.exe), utilizando WinExec e dai o windows deve funcionar normalmente... utilize o botão Pesquisar e procure por WinExec - já tem alguns exemplos aqui no forum. .ShakaO procedimento proposto pelo NiceBoy, pode ser sim entendido como o de uso de código malicioso. É o que alguns vírus costumavam fazer naquelas versões de Windows. Entretanto, para a aplicação que ele diz estar implementando, também pode ser feito uso deste procedimento. Vamos acreditar que este seja mesmo o objetivo dele. Mas a linha "ArquivoIni.Destroy" não tem nada há ver com isto. Esta linha está apenas chamando o método de "destruição" da instância da classe TIniFile alocada - "ArquivoIni", que inclusive deveria ser substituido pelo método Free - "ArquivoIni.Free", que é o mais adequado. O método Destroy não deve ser chamado diretamente por recomendação do Help: TObject.Destroy It is not recommeded coding style to call Destroy directly. Call Free instead. Free checks to ensure that the object instance is not nil before calling Destroy. OBS: Postem suas dúvidas na seção Delphi/Kilix (raiz), não na seção Tutoriais & Dicas (esta seção tem outra finalidade), de onde este tópico foi movido. Abraços
-
notei que a lista de pacotes TeeChart 4.0 Components esta lá...mas sem a seleção....e quando vou marcar(selecionar) da erro: Cannot Lod package tee44. It Contains Unit TeCanvas which is also contained in package tee44 a impressão que dá que você já está com uma instalação do Tee44 no seu Delphi 4 (se bem que tá estranho). Neste procedimento de verificar os pacotes instalados, você já deu uma percorrida na lista de pacotes e verificou se não tem o "dito cujo" em algum outro pacote, talvez a descrição esteja um pouco diferente. Utilize o botão remover para removê-lo do delphi de depois, o conveniente seria remover seus arquivos (do tee) do disco, para então, reiniciar o processo do zero. Voce pode utilizar o Windows Explorer, e na opção Localizar e procure por "Tee", na pasta raiz do delphi. Veja se ele não vai achar arquivos iguais em locais diferentes. Se for o caso, talvez seja conveniente daí, você remover estes arquivos "tee" e reiniciar o processo. Abraços
-
Para atuar sobre o texto selecionado apenas, você utilizar a propriedade SelText. Mas se for para todo o texto, então utilize a propriedade Text. Maiúsculo -> use a função AnsiUpperCase, ex.: RichEdit1.SelText := AnsiUpperCase(RichEdit1.SelText); RichEdit1.Text := AnsiUpperCase(RichEdit1.Text); Maiúsculo -> use a função AnsiLowerCase, ex.: RichEdit1.SelText := AnsiUpperCase(RichEdit1.SelText); RichEdit1.Text := AnsiUpperCase(RichEdit1.Text); Estas ações com o texto selecionado, farão que ao final, o texto não esteja mais selecionado. Se for necessário manter a seleção informe. ;)