Ir para conteúdo
Fórum Script Brasil

RafaelemeNt

Membros
  • Total de itens

    43
  • Registro em

  • Última visita

Tudo que RafaelemeNt postou

  1. Bom dia srs. Estou com um grande problema com meu sistema na máquina cliente. Primeiramente, gostaria de lembrar que a pequena aplicação está terminada e funciona corretamente dentro do esperado na máquina de desenvolvimento. O problema está na máquina em que ela irá rodar. A máquina tem Windows XP com o cliente do Firebird instalado. O problema é que a aplicação não roda na máquina cliente. Eu executo, o processo se inicia na memória (como eu posso confirmar na lista de processos via CTRL + ALT + DEL) mas não exibe nenhum formulário. Fazendo alguns testes, eu fechei a conexão com o banco de dados (SQLConnection.Connected := False), reconstruo e recompilo a aplicação, e daí sim, ela é exibida na máquina cliente. Porém, quando eu acesso qualquer parte da aplicação, vem a mensagem que eu não posso fazer a ação no ClientDataSet fechado. Se eu ligo a conexão com o banco de dados e coloco todos os ClientsDataSets ativos, aí novamente a aplicação não roda. Se eu tento ligar a conexão via programação, por exemplo: DataModule1.SQLConnection1.Connected := True; Vem a mensagem que não foi possível carregar "dbexpinf.dll" Não sei se ajuda, mas eu sigo a seguinte lógica para os meus formulários de cadastros: no evento OnCreate do form de cadastro de Cliente: DataModule1.ClientDataSet1.Append; no evento onDestroy do form de cadastro de Cliente: DataModule1.ClientDataSet1.CancelUpdates; Tenho também o ApplyUpdates no botão Cadastrar e por aí vai. Portanto, gostaria de saber como faço pra resover esse problema, e a aplicação rodar na máquina cliente. Eu utilizo Delphi 7 + Paleta DBExpress (componente SQLQuery) + Paleta DataAccess (componentes DataSetProvider e ClientDataSet) + Firebird 1.5 Por favor, se puderem me dar uma luz, eu agraço!
  2. Muito bem. Vou tentar explicar um parte da lógica pra ver se ajuda. O código: for Idx :=0 to DBGrid1.SelectedRows.Count-1 do Faz percorrer todas as linhas selecionadas do DBGrid. O código: fdados.tabelaexportadora.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[Idx])); Coloca um ponteiro para mostrar que a LINHA selecionada será utilizada (no momento do loop) Portanto, você poderia tentar algo do tipo: Faça um condicional. Se a linha "NÃO FOR SELECIONADA", então jogue os dados para tabela B. Caso contrário, jogue para a tabela A. Eu não testei, mas acredito que seja algo do tipo: procedure TForm.SpeedButton1Click(Sender: TObject); var idx, //contador :integer begin fdados.tabelareceptora.append; //contador := 0; with DBGrid1.DataSource do if DBGrid1.SelectedRows.Count > 0 then for Idx :=0 to DBGrid1.SelectedRows.Count-1 do begin if not (fdados.tabelaexportadora.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[Idx]))) then begin fdados.tabelareceptoraB.FieldByName('NOME').Value := fdados.tabelaexportadora.FieldByName('NOME').Value; fdados.tabelareceptoraB.FieldByName('PROFISSAO').Value := fdados.tabelaexportadora.FieldByName('PROFISSAO').Value; fdados.tabelareceptoraB.FieldByName('SALARIO').Value := fdados.tabelaexportadora.FieldByName('SALARIO').Value; else fdados.tabelareceptoraA.FieldByName('NOME').Value := fdados.tabelaexportadora.FieldByName('NOME').Value; fdados.tabelareceptoraA.FieldByName('PROFISSAO').Value := fdados.tabelaexportadora.FieldByName('PROFISSAO').Value; fdados.tabelareceptoraA.FieldByName('SALARIO').Value := fdados.tabelaexportadora.FieldByName('SALARIO').Value; //contador := contador+1; Fdados.tabelareceptora.Append; end; end; //onde_quer_o_texto.text := 'Foram arquivados ' + contador + ' registros.'; Fdados.tabelareceptora.ApplyUpdates(0); end; Percebe o que eu tentei te explicar? Verifique com o condicional. Caso esteja selecionado, envia para a tabelareceptoraA. Senão, envie para a tabelareceptoraB. Espero ter ajudado. Abraços
  3. O nome do seu dataset é tblfuncionario ? Corrija-me se eu estiver errado, mas aparentemente você mudou o componente mas não está utilizando as referências corretas à ele. Se eu falei besteira, seria interessante que você tentasse explicar um pouco melhor o seu problema. abraços
  4. muito obrigado Thalles eu não sabia como fazer! pensei que bastasse indicar o ícone em todos os formulários! ah, e desculpe a demora em responder agradecendo. tive uns contra-tempos no serviço tendo que viajar. muito obrigado mesmo!
  5. Bom dia srs, Estou com uma dúvida. Em todos os meus formulários, eu indiquei o ícone específico para meu projeto. Eu mesmo fiz o ícone, formato ".ico" e adicionei em todos os forms. Porém, na barra de tarefas do Windows (visto por exemplo quando o programa é minimizado), o ícone do programa é exibido como o default do Delphi. Gostaria de saber como alterar isso. Obrigado pela atenção
  6. Obrigado pela atenção Victor O Exemplo que você deu foi perfeito para o que eu precisava. Eu não sabia como fazer para pegar o valor de uma determinada coluna. Edit1.text:= Query1.FieldByName('Coluna1').AsString; Desculpa pela pergunta boba, mas sou iniciante no Delphi! Muito obrigado!! Abraço.
  7. na aplicação, se fosse EU, utilizaria um edit normal, com um evento no OnKeyPress para receber apenas números e a vírgula. E depois, na gravação do parâmetro, eu utilizaria: DM.Q_Condominio.Fieldbyname('vlrCondominio').AsFloat := strToFloat(Edit1.text); E quanto ao banco, pode deixar assim mesmo. Qualquer dúvida, poste aí.
  8. Olá petronioooo Faça o seguinte: 1) Adicione um DataText no cabeçalho ou no rodapé de seu Relatório; 2) Na propriedade DataField, tem 3 pontinhos [...] Escolha os três pontinhos e será aberta uma janela para configuração de parâmetros. 3) Acrescente na parte de baixo, em Data Text, o seguinte código: 'Página ' + Report.CurrentPage + '/' + Report.TotalPages Pronto. Execute e veja se era isso que você precisava. Qualquer dúvida, estamos aí. abraço
  9. Obrigado pela dica Victor_DF Talvez eu não tenha explicado direito minha dúvida, que seria relativo a "coluna3=value3": Como saber o parâmetro para comparar? Explicando melhor: Supondo que eu selecione a terceira linha e clique em dar baixa: como será o código para que o programa faça o update no REGISTRO da tabela relativo à linha número 3. Eu tenho uma chave primária, (campo código) na tabela CHEQUES. É um campo numérico, autoincremento e não-nulo. E ele está no DBGrid, porém não é visível. Eu acredito que o código que eu utilizaria para o update seria: UPDATE cheques SET compensado = true WHERE codigo = PARAMETRO Onde, o PARAMETRO seria a linha selecionada do DBGrid. Porém, não faço a mínima idéia de como referenciar a linha selecionada do DBGrid. Alguma idéia ou algum exemplo que utilize uma linha selecionada no DBGrid? Agradeço a atenção,
  10. Boa noite senhores. Gostaria de algumas dicas de vocês para conseguir implementar um pequeno controle de cheques. Funciona da seguinte forma: eu tenho uma tabela cheques Tabela: Cheques codigo = int, autoinc, notnull valor = double(9,2) [... alguns outros campos para caracterizar um cheque ...] compensado = boolean A idéia é que a consulta realizada pelo programa retorne todos os cheques que NÃO estão compensados, ou seja, todos cujo campo "compensado" é "false". Eu consigo fazer a pesquisa, e exibo os resultados em um grid, da seguinte forma: O que eu pretendo: Assim que o usuário selecionar uma linha do Grid, e clicar em "DAR BAIXA", o programa altere o campo "compensado" da tabela CHEQUES de false para true. Porém eu não faço a mínima idéia de como fazer isso. Vale lembrar que a pesquisa funciona corretamente, o DBGrid já está padronizado para essa finalidade, com as opções dgEditing (false), dgRowSelect (true), dgMultiSelect (true). Se algum dos colegas puder me dar uma dica sobre o que procurar, ou dar um exemplo de como fazer, vou agradecer muito. As pesquisas no google sobre DBGrid só retornam sobre "zebrar o grid" e "colocar combobox no grid" ;/ Desde já, agradeço a atenção de todos! Obrigado
  11. Primeiramente, quando existe mais de 1 registro ele dá certo? Ou ele sempre vai mostrar com um resultado a menos? Lembre-se que a mensagem " X moradores foram arquivados com sucesso" deve estar logo após o término do LOOP
  12. nsouza Estou com um pouco de dificuldade em entender o seu problema. Talvez se você explicar um pouco melhor, possamos te ajudar de maneira eficiente. Agora, aqui vai algumas perguntas. 1) Notei que sua procedure Alterar está pegando os dados do seu TDataSet. É nesse momento que aparece o erro? Quando você está puxando os dados para os edits? Ou é em outro momento, quando você transfere os dados alterados para o TDataSet e tenta gravar? Se for o segundo caso, poste o seu procedimento para salvar as alterações. 2) Qual é banco de dados que você está utilizando? Quais são os campos em questão que estão dando problema e quais os tipos e restrições atribuídos a eles? Você consegue inserir normalmente o valor "60,35" diretamente no banco? Talvez seja algum problema na definição do campo. 3) Quando você debuga a aplicação onde exatamente aparece o erro? Em que momento da aplicação? Lembre-se quanto melhor você explicar como funciona, será mais fácil para tentarmos te ajudar. Abraço
  13. Acho que nisso eu posso ajudar. Que tal você colocar uma variável do tipo inteiro dentro da estrutura de loop, iniciando ela com 0 e incrementando +1 a cada loop. Depois, no showmessa você concatena a string da mensagem com o o número contido na variável. Nisso, você estará exibindo o número de registros transferidos. Testa aí e depois nos fale =] abraços
  14. Olá Daniel, Tenho uma dúvida parecida. Vou tentar explicar de maneira clara: Eu faço uma pesquisa e os resultados são exibidos no DBGrid. Já alterei todas as propriedades do DBGrid, por exemplo: "rowSelect := True", "editing := false", "readonly := true". Agora, gostaria que, quando o usuário selecionasse uma linha e clicasse em um botão, ocorresse uma alteração naquele registro. Exemplo: DBGrid exibindo o resultado da Consulta: | Codigo | Nome | Idade | Selecionado | | 1 | Du |21 | False | | 2 | Kadu |22 | False | | 3 | Rafa |20 | False | Eu seleciono a Linha 3: | 3 | Rafa |20 | False | E clico no botão em meu form que fará uma ação, por exemplo mudar o valor do campo "Selecionado" para True. E o resultado seria: | 3 | Rafa |20 | True | A minha dúvida é: como fazer pra indicar a linha selecionada? Ou melhor, qual seria o comando SQL para o meu componente TDataSet fazer a alteração apenas na linha que o usuário selecionar?
  15. abraço Mais uma vez, perfeito Jhonas! Muito obrigado por sua ajuda! Simples, prático e super eficiente! abraço
  16. Boa noite senhores. Estou tendo um pequeno problema com o tratamento de exceções utilizando o try except. Meu problema é: tenho um edit que receberá uma entrada do usuário, correspondente ao valor de um contrato. Eu tentei fazer um pequeno tratamento para verificar se a entrada do usuário é válida, da seguinte forma: try StrToFloat(edtValorContrato.Text); except on EConvertError do begin MessageDlg('Valor Inválido. Tente Novamente',mtWarning, mbOKCancel, 0); edtValorContrato.Text := '0,00'; edtValorContrato.SetFocus; end; end; Eu debuguei a aplicação para ver o que acontecia. Ao chegar na linha " StrToFloat(edtValorContrato.Text); " , o erro aparece. A exceção para mostrar a mensagem de Valor Inválido não é exibida. Então, aparentemente o Try Except não está funcionando. Onde estou errando? Deixei passar algo despercebido? Ah, e se for uma pergunta boba, desculpem. Sou iniciante em Delphi. Agradeço a atenção..
  17. Perfeito Jhonas. Eu nem imaginava como fazer algo no Event Editor. Seu exemplo foi simples, eficiente e muito rápido. Muito obrigado pela sua ajuda!! Sucesso! abraços, Rafael
  18. Boa noite srs. Sou iniciante na programação com Delphi, e para aprender um pouco melhor, estou tentando montar um pequeno sistema para meu estabelecimento comercial. Criei uma aplicação simples, com um relatório. Utilizei o Delphi 7 + Rave 5.0. Gostaria de saber como poderia fazer para zebrar as ocorrências no meu relatório. O relatório já foi criado, e funciona da maneira esperada. Resta apenas "zebrar" as linhas para ficar mais fácil a visualização. Só lembrando, eu realmente sou iniciante, não entendo quase nada de Delphi e Rave report. Talvez essa seja uma dúvida simples, mas não estou encontrando material na Internet. Por favor, me desculpem se eu falei alguma besteira acima. Se puderem me ajudar, com algum exemplo prático de preferência, será de grande valia. Agradeço demasiada e antecipadamente, Att, Rafael
×
×
  • Criar Novo...