
Micheus
Veteranos-
Total de itens
3.189 -
Registro em
-
Última visita
Tudo que Micheus postou
-
se você já adicionou o componente TMenu e definiu suas opções em design-time, basta que você, no editor do menu, selecione a opção desejada e na janela Object inspect acesse a guia Events do item do menu. você deve encontrar o evento Click - é só dar dois clicks e no editor, escrever o código que mostrará o form chamado (com Show ou ShowModal).
-
Allanrf, você deveria ter algo como: tbTroca.First; while not tbTroca.EOF do begin tbTemporaria.Append; tbTemporariaPRECO.value := tbTrocaPreco.value / tbTrocaQTDE.value; tbTemporariaTOTAL.value := tbresultadoQTDE.value *tbTemporariaPRECO.value; tbTemporaria.Post; tbTroca.Next; end; mas me parece que este TOTAL seria exatamente o valor contido em preço, já que preço está recebendo o valor unitário, quando você divide por QTD. E de onde é este tbresultado?
-
Emulandron, sugiro que baixe e instale um componente chamado LinkLabel (freeware). Download (ref Torry's Delphi)
-
(Resolvido) Como Calcular Número De Aulas Excedidas E Atribuir A
pergunta respondeu ao robinhocne de Micheus em Delphi, Kylix
eu também. :huh: -
Utilizar Um Botão Do Flash No Delphi
pergunta respondeu ao Vivendo&Aprendendo de Micheus em Delphi, Kylix
Vivendo&Aprendendo, você tentou utilizar o evento FSCommand? Este artigo é voltado a VB mas pode ser facilmente adaptado ao Delphi, talvez ele possa lhe ser útil => Macromedia Flash and VB: A Potent Combination (Mindfire Solutions) -
(Resolvido) Como Mostrar Uma Mensagem Ao Validar Uma Consulta?
pergunta respondeu ao Allanrf de Micheus em Delphi, Kylix
para isto, basta que o dataset que você utiliza para fazer a busca, esteja vinculado ao DBGrid. -
(resolvido) Relatório Mestre/detalhe Com Adoquery
pergunta respondeu ao Vivendo&Aprendendo de Micheus em Delphi, Kylix
Vivendo&Aprendendo, voce pode utilizar o mesmo conceito da sua consulta - parametrização. Na tabela ItensSaida (Detail), você parametriza (filtra na where) o campo de ligação com Saidas. Algo assim: select * from ItensSaida where CodSaida = :CodSaida depois você vincula ela via propriedade DataSource ao seu ADOQuery Saidas (Master). Importante você utilizar o nome do parâmetro igual ao nome do campo na tabela Master. Do contrário não funciona. Mas como você perceberá, o conceito é exatamente o mesmo de "MasterSource, MasterField". Vai uma dica: NUNCA utilize o * na cláusula SELECT, a menos que você realmente queira retornar todos os campos da sua tabela. Imagine você precisar de uns 5 campos de uma tabela com uns 30, sendo muitos deles varchar, e tendo a tabela centenas de registros. :blink: Voce vai fazer trafegar na rede mais informação do que seria necessário, então para piorar (nem tanto), coloque ai umas 20 maquinas fazendo este tipo de consulta. -
sllc, dê uma olhada neste post e veja se avança.
-
estes pares de campos por acaso não seriam a "mesma" coisa? É normal que se tenha apenas um campo como identificador (seja nomeado ID... ou COD...), a menos que você utilize um identificador do seu banco de dados e um outro código que seja proveniente de outra fonte (tipo um fornecedor ou cliente). Ainda assim, se justificaria se o mesmo puder duplicar, já que o principal objetivo desde identificado é identificar unicamente um registro na sua tabela (é parte do processo de normalização do banco).
-
(Resolvido) Pesquisa Usando Max, Pesquisar Nome Com Maior Codigo&
pergunta respondeu ao José Rodrigo de Micheus em Delphi, Kylix
José Rodrigo, voce pode também dar uma olhada deste post em diante, com algumas explicações sobre este assunto. -
Guilherme, o que pode estar errado é este "COMMIT WORK". A "comitação" é feita através da sua transação (componente IBTransaction).Observe, inclusive, que você já está fazendo isto antes de passar o novo insert, quando utiliza a linha: DM.IBTransaction1.CommitRetaining; Esta transação, muito provavelmente, deve estar associada ao seu componente "qryManutencao" (propriedade Transaction), e é justamente este comando que você deverá executar, caso sua inserção não falhe. Mas também, parece-me estar faltando os parênteses da cláusula VALUES -> values ( valor_1, valor_2, ..., valor_n) Abraços
-
Não. Você pode preparar uma instalação de seu programa de modo a incluir o BDE também. Na seção Tutoriais & Dicas tem dois tópicos que podem ser útieis: - Como usar o Install Shield - Instalando o BDE e também este post: codigo para gerar chaves de registro, quando instalar arquivos do BDE na mão; Outra opção é baixar um instalador da net. No Baixaki tem um para um BDE compacto a versão 5.2 (não testei) Abraços p.s. "Assim deu certo. outra duvida", se você é CristianoCarvalho, tente logar-se como tal, ou utilize um nick que não pareça uma resposta. ;)
-
samuelsjn, se é assim, acho que se esgotaram minhas sugestões. :( Mas vão alguns comentários sobre o código que você postou inicialmente: 1) acho que seria interessante chamar o procedimento no OnShow, ao invés de no OnActivate; 2) lstitmItem.ListView.Refresh; - esta linha ao final do seu procedimento não é apropriada. Se seu dataset QueryAuxiliar não contiver dados, a variável lstitmItem será nula (ou lixo) e poderá resultar em erro. Se realmente for necessário forçar a atualização, melhor seria você utilizar o proprio ListView -> lstvwDados.Refresh; Abraços
-
este comentário foi porque, se eu não me engano (faz um tempão que não mexo com SQLServer) quando era executado um comando como DELETE FROM (com vários registros), a trigger era chamada apenas uma vez para todos os excluídos e não uma vez para cada uma das linhas eliminadas.Mas pelo seu comentário, falei besteira. Obrigado pela correção. ;)
-
FelipeZVM, aparentemente você não está alocando espaço para a variável string que passa para a função. Lembrando que ser o tamanho da string a ser lida é 50, o espaço que deverá ser reservado (alocado) é de 50+1.
-
CristianoCarvalho este erro indica que o identificador não está declarado. Mas, sabendo que esta é uma função disponível no Delphi, vê-se que faltou você adicionar na cláusula USES a unit SysUtils. Já ShowMessage está declarado na unit Dialogs. Para descobrir em que unit uma procedure, variável, objeto, enfim "qualquer coisa" do Delphi basta que você posicione o cursor sobre a palavra e tecle F1. No texto do help, inicialmente há uma descrição sobre o item em questão, seguido pela Unit onde o mesmo aparece, sintax de uso e outras descrições.
-
(Resolvido) Colocar Progressbar Em Importação
pergunta respondeu ao maxm.ro de Micheus em Delphi, Kylix
maxm.ro, você não deixou claro o que faz em seu código quando a condição IF é satisfeita, então, assumindo que o processamento sobre o arquivo (importação) ocorra apenas no ELSE, fica conveniente e logicamente mais correto que "DM.ADOQryCadastro.append;" seja chamado neste ponto, pois apenas neste momento você atribui valores e "posta" o resultado. Devo concordar com o Micheus, porque eu tambem não gosto, sendo assim vai outra modificação para voce, sem que seja necessario ler o arquivo inteiro duas vezes: Jhonas, se você concorda comigo neste ponto, então vai entender que eu não posso concordar com você. Observe que ao utilizar o componente TStringList e carregando o arquivo via método LoadFromFile para obter Count (representando a quantidade de linhas no arquivo) você obrigatoriamente está fazendo uma leitura do arquivo. Daí, ao eliminar o objeto e utilizar o procedimento com AssignFile, Reset, ..., como anteriormente, voce está fazendo a segunda leitura. Talvez você até tenha pensado certo, mas não lembrou de ajustar o código. O correto em sua colocação, seria justamente utilizar as linhas já carregadas no StringList para proceder com a importação. Neste caso, sim, teríamos apenas uma leitura: procedure TForm1.Button5Click(Sender: TObject); var Entrada : String; cont : integer; Lista: TStringList; begin Lista := TStringList.Create; try Lista.LoadFromFile('C:\Documents and Settings\lanhouse\Meus documentos\MAX\Banco de Dados\3271_20070912\3271_20070910_Cadastro.txt'); Progressbar1.Max := Lista.Count; //valor max do Progressbar em função do numero de linhas do arquivo DM.ADOQryCadastro.open; // abre a table DM.ADOQryCadastro.First; // aponta para o primeiro registro cont := 0; while cont < Lista.Count do begin entrada := Lista.Strings[cont]; Inc(cont); Progressbar1.position := cont; Edit4.Text := Copy(Entrada,01,07); if (Edit4.Text = 'RESPOND') or (Edit4.Text = 'RENOVAD') then begin end else begin DM.ADOQryCadastro.append; DM.ADOQryCadastroNumCadastroUnico.Value := StrToInt(copy(Entrada,01,07)); DM.ADOQryCadastroCodTipoPessoa.Value:= StrToInt(copy(Entrada,08,01)); DM.ADOQryCadastroCPF_CNPJ.Value := Copy(Entrada,19,14); DM.ADOQryCadastroNomeCliente.Value := Copy(Entrada,33,50); DM.ADOQryCadastro.post; // salva end; end; finally Lista.Free; end; Progressbar1.position := 0; end; -
samuelsjn, dando uma olhada melhor numa tela que eu utilizo o ListView, me ocorreu que talvez va não tenha definido em design-time o nome das colunas. No código, o que você faz é inserir os dados referentes as colunas e que serão mostrados no "grid" (eu também faço deste modo). Então, acho que talvez você não tenha criado as colunas em design-time via propriedade Columns (tem um botãozinho com "..."). A primeira coluna definida será aquela em que aparecerá o seu "lstitmItem.Caption", as demais correspondem a cada "lstitmItem.SubItems.Add". Não seria isto que está faltando?
-
Sim, Fiz assim mas dá erro no A: With QryPraA do Begin Close; Sql.Clear; Sql.Add ('Select P.Aluno, P.Instrutor, P.Data, P.Horario, P.Categoria, P.Aluno From Praticas P,' +'Instrutores I Where P.Aluno=' + TxtMat.Text + 'AND P.Categoria= 'A' AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario'); Open; end; quando você quizer colocar um string no seu SQL deste modo, você deve colocar duas vezes as áspas simples: 'AND P.Categoria= ''A'' AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario'); ou usar a função QuotedStr (se não me engano), que fará a mesma coisa. 'AND P.Categoria= ' +QuotedStr('A') + ' AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario');
-
Pois então, robinhocne, não seria o caso de você incluir o campo Categoria na cláusula WHERE, e passá-la como parâmetro?
-
Allanrf, não sei se entendi direito sua dúvida mas veja se seria algo assim:- você tem uma tela onde o usuário digita em um TEdit o numero do cupom fiscal (vamos supor que seja EdNumCupon); - quando o usuário clicar em um botão para executar a ação, você gera o nome do arquivo a procurar; - verifica se o arquivo existe num diretório "H:\mov03" e existindo faz algo. procedure TForm1.BtnAcaoClick(Sender :TObject); var FileName :string; begin FileName := 'H:\mov03\' + EdNumCupon.Text +'.txt'; if FileExists(FileName) then begin // faz alguma coisa aqui com o arquivo end; end;
-
(Resolvido) Colocar Progressbar Em Importação
pergunta respondeu ao maxm.ro de Micheus em Delphi, Kylix
maxm.ro, se você observar o post do Jhonas, vai ver que ele colocou antes do seu código alterado, o código de uma função para retornar o número de linhas do arquivo sendo importado (function QuantasLin). Particularmente não gosto deste procedimento porque implica que você lerá o arquivo completo 2 vezes. Mas, como não tenho condições de lhe ajudar com o ".NET", a opção funciona. Abraços -
eder lucio, pela passagem grifada acima e pela mensagem no seu código, devo lhe chamar a atenção para o fato de voce estar utilizando o termo erradamente. O que você deseja é: "excluir REGISTROS do banco de dados", não o arquivo. Também em banco de dados, ainda que fosse referente ao seu "arquivo" clientes, você estaria falando na TABELA clientes. É importante utilizar os termos corretos para que todos possamos nos entender a cerca do que falamos. apenas completando, para não gerar confusão ao colega eder lucio, este caso pressupõe que o registro em questão esteja "selecinado" (posicionado) adequadamente no dataset AdoQuery. Este método da classe TDataSet elimina apenas o registro corrente, ou seja, apenas o atual (somente 1 registro). Se fosse o caso de remover vários registros com uma mesma condição, seria necessário chamá-lo "n" vezes. Por exemplo, eliminar todos os pagamentos do cliente 335 (vamos supor que ele tenha mais que um pagamento realizado): 1) Utilizando o método Delete do DataSet: Adoquery1.SQL.Clear; Adoquery1.SQL.add('SELECT * FROM PAGTOS WHERE COD_CLIENTE = 335'); Adoquery1.Open; where not Adoquery1.EOF do Adoquery1.Delete; Adoquery1.Close; 2) Utilizando a instrução DELETE do SQL: Adoquery1.SQL.Clear; Adoquery1.SQL.add('DELETE FROM PAGTOS WHERE COD_CLIENTE = 335'); Adoquery1.ExecSQL;Nestes casos, este último método seria preferível ao primeiro. Observe também, que o Close só é utilizado quando executado o Open. O uso de instruções SQL que requerem sua execução via ExecSQL, não "abrem" o dataset. Abraços
-
(Resolvido) Colocar Progressbar Em Importação
pergunta respondeu ao maxm.ro de Micheus em Delphi, Kylix
é esqueci do detalhe do ".NET".Eu não tenho como verificar isto. Você poderia tentar olhar no help (procurando por filesize) para ver de onde você poderia "importar" a função - caso ela ainda exista para a plataforma ".NET". Eu acredito que ainda haja um meio de você saber o tamanho de um arquivo. -
samuelsjn, então verifique se a propriedade ViewStyle está definida com outro valor que não seja vsReport, porque é apenas neste estilo que o header das colulas são mostrados.