Ir para conteúdo
Fórum Script Brasil

Daniel Sanches

Membros
  • Total de itens

    126
  • Registro em

  • Última visita

Tudo que Daniel Sanches postou

  1. tente isso: vBanco : String; IniFileName : TIniFile; begin IniFileName := TIniFile.Create(ExtractFilePath(ParamStr(0))+FileName); vBanco := Trim(IniFileName.ReadString('acesso','BancoRemto','')); Dirlocal := Trim(IniFileName.ReadString('acesso','PastasRemto','')); frmPrincipal.Edit1.text := Dirlocal; Dirtrabalho := (ExtractFilePath(Application.ExeName)); Conection.ConnectionString := vBanco; // não sei qual connection está usando, aki você tenta conecta-lo. Ex: connection.Connect; if not COMPONENTE_DE_CONEXÃO.connected then //cheque se seu componente conseguiu conectar... begin vBanco := Trim(IniFileName.ReadString('acesso','banco','')); Dirlocal := Trim(IniFileName.ReadString('acesso','PastasLocais','')); frmPrincipal.Edit1.text := Dirlocal; Dirtrabalho := (ExtractFilePath(Application.ExeName)); end; IniFileName.Free; end;
  2. como você está fazendo para importar os dados ?? está usando algum componente ??? está fazendo um while eof na tabela e importando 1 a 1 ?? tente usar algo assim: 'insert into TABELA1 (CAMPO1,CAMPO2,CAMPO3) values(select CAMPO1,CAMPO2,CAMPO3 from TABELA2)' colocando os campos das tabelas 1 e 2 nas respectivas ordens ...
  3. tentei dar uma reestruturada no seu código... substitua a linha que comentei pelo comando de conexão do seu Connection... vBanco : String; IniFileName : TIniFile; begin IniFileName := TIniFile.Create(ExtractFilePath(ParamStr(0))+FileName); Try vBanco := Trim(IniFileName.ReadString('acesso','BancoRemto','')); Dirlocal := Trim(IniFileName.ReadString('acesso','PastasRemto','')); frmPrincipal.Edit1.text := Dirlocal; Dirtrabalho := (ExtractFilePath(Application.ExeName)); Conection.ConnectionString := vBanco; // não sei qual connection está usando, aki você tenta conecta-lo. Ex: connection.Connect; except begin Try vBanco := Trim(IniFileName.ReadString('acesso','banco','')); Dirlocal := Trim(IniFileName.ReadString('acesso','PastasLocais','')); frmPrincipal.Edit1.text := Dirlocal; Dirtrabalho := (ExtractFilePath(Application.ExeName)); Finally end; end; end; IniFileName.Free; end;
  4. cola aki o código da unit do form que fecha sozinho pra gente dar uma olhada ...
  5. se for pra copiar tudo de uma tabela para outra idêntica, você pode tentar com SQL: insert into TABELA1 (select * from TABELA2) já não sei se a velocidade será melhor ...
  6. só para ficar registrado, há algum tempo atrás tive a mesma dúvida do nosso colega e cheguei na conclusão que aprender uma nova linguagem (como php por exemplo) seria inviável ... após diversas consultas na internet, optei por hospedar meu banco MYSQL no provedor UOL, onde conto com um excelente grupo de apoio e nunca tive problemas, além do preço ser bem em conta (hoje 02/06/2010 na faixa de R$ 14,90 mês para 5GB de espaço para banco de dados, sendo ilimitado o número de bancos) ... utilizo diversos sistemas on-line e a velocidade é muuuito boa (utilizo conexão de apenas 1mb)... é lógico que a forma que o sistema é desenvolvido influencia muito na velocidade. para quem nunca hospedou nenhum banco de dados em um provedor, é realmente difícil encontrar algum tutorial completo sobre o assundo na net... mas fica aki registrado minha opnião. abraço !!
  7. você pode fazer assim: procedure Tform1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if data.query.RecNo = 4 then //se for o item 4 ... DBGrid1.Canvas.Font.Color:= ClRed; DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); end;
  8. não entendi muito bem o que você deseja, mas para você fazer uma pergunta com 3 opções, você poderia fazer algo assim: case MessageDlg('Pergunta que você quiser.',mtConfirmation,[mbYes,mbNo,mbCancel],0) of 2: begin showmessage('Selecionado botão Cancela'); ...comandos... end; 6: begin showmessage('Selecionado botão Sim'); ...comandos... end; 7: begin showmessage('Selecionado botão Não'); ...comandos... end; end; obs: declare Dialogs na cláusula uses... abraços !!!
  9. olha, da forma que você usou, era pra funcionar, pois todos os comandos que estão entre o try...except, serão testados e caso dê alguma exceção, vao para os comandos após o except. tente fazer um teste: try fdados.clientdataset.Post; fdados.clientdataset.ApplyUpdates(0); except on e: Exception do showmessage('Erro ao gravar o registro.'+#13+E.Message); end; com o código "except on E: Exception", você trata qualquer tipo de exceção ... talves com o EDataBaseError você não esteja conseguindo capturar o erro ... sempre utilizei o código acima com sucesso ... abraços !!!
  10. não entendi bem a pergunta, mas seria você conseguir ler os dados selecionados ??? se for isso, você utiliza os dados selecionados na tabela que está linkada com o DbGrid ... tipo: Tabela1.FieldByName('CAMPO').AsString, assim, você acessa o campo CAMPO selecionado na DBGrid ... se não for bem isso, post aki especificando melhor a dúvida ... abraços !!!
  11. para selecionar a linha toda, mude a em Options do DbGrid a opção dbRowSelect = True... abraços !!!
  12. olha, tente descobrir exatamente onde e quando está dando o erro, para filtrar as possibilidades. uma vez tive um problema idêntico: eu usava todo o sistema normalmente, e de repente a tal mensagem: Acess Violation; descobri que o erro ocorria quando eu passava o mouse sobre determinados botões. eu utilizava um componente para modificação do hint dos botões e esse componente estava com pau.... simplesmente troquei o componente e recompilei... problema resolvido... abraços !!!
  13. veja se estes links te ajudam: http://scriptbrasil.com.br/forum/index.php...94&hl=tecla http://scriptbrasil.com.br/forum/index.php...90&hl=tecla abraços !!!
  14. uma dica: sempre que quiser ordenar datas, para facilitar, utilize o formato aaaammdd, assim, não precisa ficar convertendo para classificar... abraços !!!
  15. para o paradox funcionar em rede, você deve fazer algumas configurações no BDE: 1. Entre em Configuration -> Drivers -> Native -> Paradox. na opção à direita (NET DIR) coloque Z:\ 2. Entre em Configuration -> System -> INIT. na opção à direita (LOCAL SHARE) coloque TRUE 3. Vá em Databases e crie um novo alias e configure o PATH para Z:\ Sempre deixe o Z:\ direcionado para o diretório onde se encontram os dados .. abraços !!!
  16. o valor default (0) é para caso ocorra um erro na conversão, ou seja, sempre que não conseguir converter (o valor é nulo ou um string por exemplo) ele retorna 0 ... abraços !!!
  17. o erro está aí mesmo ... (frmCadPro.cboCadPro_Icms.Text) está com valor '' (nulo) ... tente colocar assim: frmCadPro.cboCadPro_Icms.Text := FormatFloat('#,###,##0.00',StrToFloatDef(frmCadPro.cboCadPro_Icms.Text,0)); abraços !!!
  18. olha !!! eu não seria a pessoa mais indicada pra te ensinar, pois, também não coloquei nenhum trabalho com código de barras em execução... mas, os posts que te passei, te explicam bastante sobre esses códigos, caso não, dá uma buscada no google em "Código Barras" que você vai encontrar bastante material pra estudo ... caso não esteja conseguindo encontrar, post novamente que assim que tiver + tempo te ajudo na busca ... abraços !!!
  19. dá uma olhada nesse link pra ver se te ajuda (dentro deste tópico, existem vários outros links): http://scriptbrasil.com.br/forum/index.php...hl=código+barra abraços !!!
  20. olha !!! acho que não há nenhuma restrição quanto a você criar seu próprio código, desta forma mesmo que você postou ... só teria algum problema se outras pessoas fossem utilizar essa codificação ... agora, você só teria que padronizar este código para quando você for ler o código, conseguir trabalhar o tratamento do código, separando os devidos caracteres ... abraços !!!
  21. quanto a aceitar somente números, coloque a rotina no evento OnKeyPress: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9']) then Key:= #0; end; quanto a exibir mensagem se não digitou @, coloque esta verificação no OnExit do Edit: if AnsiPos('@',Edit1.Text) <= 0 then showmessage('Email inválido.'); na rotina acima, você tem que declarar a unit StrUtils na cláusula uses ... abraços !!!
  22. bom, retornando a razão do tópico, já que o seu problema principal está na mensagem de KeyViolation, então você colocaria o comando try...except no seguinte local: grava; --> o que essa função faz exatamente ??? ( Procedure que pega o texto dos Edits, maskedits e combos para salvar no banco de dados) try dm.Cds_Morador.Post; dm.Cds_Morador.ApplyUpdates(-1); except on E: Exception do begin MessageDlg('Erro ao salvar o registro.'+#13+#13+E.Message,mtError,[mbOk],0); dm.Cds_Morador.CancelUpdates; end; end; faça um teste aí ... qualquer coisa é só postar .... abraços !!!
  23. não sei se existe forma mais simples, mas uma delas, seria você verificar quais os campos alterados e fazer o comando update na mão: 'update TABELA set CAMPO = :pDADO'; assim, você só vai salvar o campo que foi alterado, porém, deverá fazer tudo na mão !!! abraços !!!
  24. bom, é o seguinte ... depende muito o que você quer, mas dentro try...except, você coloca o código que deseja que seja executado SEM exceções ... entre o except...end, você coloca o código que deseja executar caso ocorra alguma exceção entre os comandos do try...except. eu teria que saber melhor sobre suas funções pra te dar um exemplo melhor: dm.Q_Morador.Close; grava; --> o que essa função faz exatamente ??? dm.Cds_Morador.Post; dm.Cds_Morador.ApplyUpdates(-1); PanGrid.BringToFront; liberaPesquisa; --> ??? if confira = 2 then --> ??? begin selecao; --> ??? end else begin limpa; --> ??? PanTitulo.Caption:='Cadastro de Moradors - Consultando'; dm.Cds_Morador.Close; dm.Cds_Morador.open; end; leitura; --> ??? mas você deverá fazer algo assim: try ...comandos que deseja executar... ...comandos que deseja executar... except on E: Exception do begin ...comandos que deseja executar caso tenha ocorrido alguma exceção nos comandos entre try...except end; end; abraços !!!
×
×
  • Criar Novo...