[delphi-br] [OFFTOPIC] Tratamento de erros do DB
Qual é a melhor forma de saber o tipo de erro retornado pelo DB na minha aplicacao. Por exemplo, como saber quando aconteceu um integrity constraint violation ou um unique violation? Estou fazendo testes com o PostgreSQL-8.3 usando Zeoslib-6.6.1 no Delphi7. O PostgreSQL tem os error codes, que no caso seriam: 23000 - INTEGRITY CONSTRAINT VIOLATION 23505 - UNIQUE VIOLATION Quando trato os error no Delphi a variavel de erro do zeos tem um tal de E.ErrorCode, mas esta sempre retornando 0 independente do erro. Pelo que vi no forum do zeos isso e probleminha da lib, mas o post era de 2005 e nao sei se ja corrigiram. Ate agora a unica solucao para saber o erro era fazendo de um jeito mais POGuiano: capturar a mensagem de erro e verificar se dentro da string tem palavras como integrity constraint violation, unique violation ou ate o codigo de erro que normalmente aparece no inicio, como procurar 23456 em 23456 - aconteceu uma violacao xyz. Ate que funciona bem, mas nao acho que seria a melhor forma. Gostaria de saber do pessoal quais sao os melhores metodos para tratar esses erros, talvez nao so do postgres, mas de outros bancos tambem como Oracle ou SQLServer.
Re: [delphi-br] Sugestão/Opnião de Chave Primária.
2008/3/26 Ricardo Lima [EMAIL PROTECTED]: Pessoal gostaria da opnião de voçês sobre qual melhor forma de montar essa chave primária. Um software de automação comercial que tem um escritório e n lojas espalhadas no Brasil, todas as operações realizadas nas lojas vão para o escritório(consolidadas), como exemplo a tabela de vendas, tenho que montar a chave primaria de forma que quandos os dados chegarem no escritório não de conflitos, a primcicio tenho duas possibilidades: Exemplo baseado na tabela de vendas. 1- Montar uma chave composta, COD_VENDA(auto_inc) + COD_LOJA, Ou 2-Montar uma chave simples com diferentes ranges, COD_VENDA(auto_inc). Ex.: Loja 1 - range 1000/1999 Loja 2 - range 2000/2999 Loja n - range n000/n999 Qual dessas duas opção na opnião de voçês devo utilziar? Obrigado. At. Ricardo Se esse autoinc for uma sequencia do db principal então não tem problema, só o cod_venda seria suficiente. A sequencia não vai se repetir entre os registros e o DB cuidará disso. Mas o sistema precisa estar interligado em tempo real com o db principal. Se o que você quer é tipo uma sincronizacao (a cada x dias sincronizar com o db principal por exemplo) então a história é outra, nesse caso acho que COD_VENDA(auto_inc) + COD_LOJA seria uma boa.
[delphi-br] [MEIOOFF] Pegar 3 primeiros dígitos de um número sem converter para string
Salve galera. Nunca fui bom em matemática, só o básico mesmo, por isso não sei o nome do que eu to procurando. Gostaria de pegar apenas os 3 primeiros dígitos de qualquer número inteiro, exemplos: 123456789 -- 123 23456 -- 234 75 -- 75 Consegui apenas convertendo os números para strings, mas gostaria de não fazer isto. Será que não alguma função do Delphi ou cálculo que faça isso? Obrigado.
Re: [delphi-br] [MEIOOFF] Pegar 3 primeiros dígitos de um número sem converter para string
2008/3/21 Joao Morais [EMAIL PROTECTED]: Alosi wrote: Porque não quer converter em string, pois pegar somente x números é pra cálculo com string e não função númerica. Exato. Porque em algumas circunstâncias, converter em string fica mais caro para o processador. Exato -- Joao Morais Deixa eu explicar a história toda. Estou fazendo uma aplicação que utiliza o Zeoslib para conectar no DB do Oracle. Porém a versão Oracle10g é suportada em partes pelo Zeos. Um problema que eu encontrei foi com datas Timestamp do DB, aparecia um EConvertError se minhas tabelas tivessem algum campo Timestamp. Um pequena olhada no código do Zeos e eu descobri que ele utiliza a função EncodeTime para tratar as datas vindas do DB, porém o parâmetro MSec do EncodeTime deve ser menor ou igual a 999 e o Oracle retornava um MSec de 123456789... Ou eu convertia as datas no DB na hora de retornar os registros ou na máquina do cliente alterando o fonte do Zeos. Achei melhor converter nas máquinas dos clientes e poupar o servidor, mesmo porque senão todos os meus selects e componentes que fizessem manipulação automáticas de datas do db precisariam ser alterados e não cheguei a testar pra ver se ia funcionar. Então fiz isso no código do Zeos antes das chamadas do EncodeTime: - uses StrUtils, ...; ... MSec := StrToInt(LeftStr(IntToStr(MSec), 3)); - Funciona, mas achei a solução meio [1]POGuiana e gostaria de altera-la se houver uma solução melhor. [1] - http://desciclo.pedia.ws/wiki/POG
Re: [delphi-br] [OFFTOPIC] Oracle ou PostgreSQL?
O problema também seria convencer o pessoal deixar eu usar o postgresql... ainda mais que eu sou novo por aqui. Mas eu instalei o Oracle 10g pra testar e reparei que ele é um elefante em cima de uma baleia azul. Só a instalação comeu mais de 1 GB e o banco inicial tinha 700MB. É muito pesado a ferramentas dele utilizam Java que deixou mais pesado ainda (nada contra java é que eu já programei em python XD), não sei se é normal mas leva um bom tempo pra abrir só o login do Enterprise Manager, o pc não é tão ruim é um amd 64 +3000 com 512MB RAM e HD 250GB SATA. Aproveitando o OFF, vou add mais um OFF: Eu baixei o Oracle 10g do site da Oracle mesmo já que era pra teste. Na instalação eu criei o banco de dados inicial com o nome de orcl e senha orcl10. Eu acesso o Enterprise Manager pelo localhost:5500/em e é exibido o login pra conectar no banco orcl. Pórem não estou conseguindo logar, ele diz que é usuário ou senha inválido e não dá pra deixar nenhum campo em branco. No usuário eu tentei orcl, SYS e SYSTEM com a senha orcl10, tentei também com os meu usuário e senha do windows e mesmo assim deu como inválido. Criei um outro banco orcl2 e também não entrou, já reinstalei (apaguei até do registro do windows) e reiniciei o pc e mesmo assim não consigo entrar. Alguém sabe o que pode ser isso? Outra pergunta, com eu faço pra conectar o oracle no delphi(qual componente usar)? Pois minha única experiência foi com ADO. On Dec 28, 2007 6:53 PM, José Mário Silva Guedes [EMAIL PROTECTED] wrote: Meu voto é para o PostgreSQL. Concordo que para Delphi a biblioteca de conexão ao banco de dados é uma escolha complicada mesmo. Porém vale a pena insistir no uso do PostgreSQL com Zeos porque o Zeos usa a libpq.dll para se conectar ao banco de dados, o que torna a conexão veloz. Porém concordo que dá um frio na barriga sim. O PostgreSQL é um banco de dados em franca expansão, sairá em breve a versão 8.3 - com muitas novidades - e a comunidade brasileira é muito forte. Eu uso no Windows, pois detesto Linux. E brigo pelo PostgreSQL com unhas e dentes, mesmo no Windows. Alguns links interessantes: http://pgviavel.blogspot.com/ - Meu blog sobre PostgreSQL com Zeos http://www.midstorm.org/~telles/2007/08/30/16-caracteristicas-do-oracle-que-fazem-falta-no-postgresql/ - Esse cara entende do assunto Recentemente teve a primeira PGCon Day Brazil. E foi um sucesso! 250 DBAs\Desenvolvedores de todo Brasil. O PostgreSQL é usado para gerenciar as fotos da Amazônia Legal, alimentação de todos os quartéis da Força Aérea Brasileira, dados corporativos do Metrô de São Paulo, e por ai vai. Guarde o dinheiro do Oracle para outros investimentos. Eu faria isso. Bom final de ano a todos.
Re: [delphi-br] [OFFTOPIC] Oracle ou PostgreSQL?
Bom, pelo jeito vou ter utilizar Oracle mesmo, pois os outros sistemas daqui estão em Oracle e a lib do Zeos não está sendo muito confiável: -Foi complicado compilar o Zeos, apareceram milhões de warnings. Tive que adicionar algumas libs que não estavam na documentação. -Atualmente não funciona no PostgreSQL 8.2, faz sentido pois essa versão é muito recente. Só funciona usando o protocolo para a versão 7.x. -O nova versão do Zeos tem alguns bugs que me preocuparam: [postgresql] [memory] Memory grow when connection failed Em um servidor que ficará ligado por semanas isso é um problema. Não digo que a culpa é do PostgreSQL, só não estou confiando no Zeos. On Dec 27, 2007 1:23 AM, Anderson Furtilho [EMAIL PROTECTED] wrote: Aqui no meu local de trabalho usamos PostgreSQL. A um tempo atrás trabalhei um ano com oracle e hoje ja faz 2 anos que trabalho com post e sem sombra de duvidas recomendo o PostgreSQL. Por ser free eu ja vi ele fazer coisas que o oracle faz. Acho que o maior problema do post é sem duvida a divulgação, pois vc ouve falar mais em oracle do que o post, mas se vc ver os dois funcionando lado a lado vai ver que o post não fica atrás não, e se bobear bate em algumas coisas do oracle. Ai vale a balança do bolso, se vc não quer gastar muita grana vai de post se vc tem grana vai de oracle. Pois no caso o post o que vai pegar mesmo é gente pra se trabalhar com ele, vc tera que fazer uns cursos legais pois o que vai encontrar é só na net mesmo. Livros essas coisas é meio difícil e gente que mexe com ele tb. Aqui na faculdade temos um cara que só mexe com ele, inclusive fez diversos cursos em São Paulo, posso garantir que ele manja muito..rsrsrs Aqui não temos problemas com o post e ele manda bem o nosso sistema academico, pois trabalhamos em uma faculdade e ele controla parte academica, financeiro e diversos outros pequenos sistemas que temos que fazer nele. Fora do meu trabalho eu desenvolvo sistemas em FireBird e no meu ver eu recomendo PostgreSQL para grandes entidade como no meu caso a faculdade e firebird para diversas outras entidades como lojas por exemplo, pois ele é muito mais facil de configurar do que um postgresql da vida. Bom ai vai minha dica.
Re: [delphi-br] [OFFTOPIC] Oracle ou PostgreSQL?
Os problemas que eu tive foram para instalar e utilizar. Os bugs eu vi aqui: http://zeosdownload.firmos.at/downloads/releases/Changelog-6.6.2.html On Dec 27, 2007 10:39 AM, Joel Alexandre [EMAIL PROTECTED] wrote: Até concordo em utilizar Oracle porque os sistemas estão em Oracle. Agora, Zeos não confiável negativo!. A versão que uso é a 6.6.1 e trabalho tranquilamente.
[delphi-br] Enviar e receber imagens do servidor
Eu dei uma procurado na lista sobre isso mas não achei um caso bem específico para minha dúvida. Como são imagens de documentos de funcionários pensei em deixar da seguinte forma no servidor: \diretorio\numero_funcionario0001\imagem1,2,3,4... \diretorio\numero_funcionario0002\imagem1,2,3,4... \diretorio\numero_funcionario0003\imagem1,2,3,4... Na hora do cadastro do funcionário pode faltar alguns documentos. O cliente poderia scanear o doc posteriormente sem precisar estar na frente do programa para enviar para o servidor. Claro que se for algumas imagens ele poderia utilizar o programa mesmo, mas se forem muitas seria mais fácil para ele deixar em um pendriver (principalmente porque ele já tem um hd externo com várias imagens) e depois descarregar no servidor com um ctrl+c/v. Então, gostaria de saber o seguinte: -Se é possível que meu programa cliente envie e receba imagens (ou arquivos) para uma pasta do servidor? -E se a pasta não existir, o programa cliente conseguiria criar a pasta la no servidor? Teria algum problema com permissões? (é tudo winXP) Pensei em utilizar pasta compartilhada mas já tive problemas com pastas que não eram reconhecidas em que a rede precisava ser reiniciada no cliente servidor e etc, mas isso é outra história. Gostaria de não usar pastas compartilhadas para não ter que me preocupar com mais uma configuração no pc do cliente ou servidor. Também aceito outras soluções, já a minha solução pode estar errada ou ser melhorada.
Re: [delphi-br] [OFFTOPIC] Oracle ou PostgreSQL?
Não haveria muito problema em o banco ser mais parrudo o não, o problema é quanto a recuperação de dados. Eu gostaria de usar o postgresql, mas me orientaram a usar o Oracle pois seria mais confiável. On Dec 22, 2007 8:32 PM, Joel Alexandre [EMAIL PROTECTED] wrote: Bom dia Yoshio, Veja só, existem mais motivos para sair em defesa do PostgreSQL e não somente por ser free, ok?. Apesar de não usá-lo profissionalmente nos meus aplicativos, considero esse banco quase tão bom quanto um oracle. Mas me permita um palpite. Visto que seu banco de dados não será tão grande assim, vc já pensou na possibilidade de usar um Firebird? Acho que ele dá contra do recado tranquilamente. Sem falar que é muito simples de mexer e possui recursos internos bem interessantes. []Os Joel Olá pessoal. Vou começar a desenvolver um sistema em Delphi e gostaria de saber se existe muita diferença entre Oracle ou PostgreSQL que é free. O servidor do banco de dados será um pc normal com Windows XP. O sistema é aparentemente simples, algo como um controle de funcionários com nome, endereço, se possui alguma doença, outros trabalhos, imagens de documentos... para 3000 funcionários(registros). Mais ou menos 10 pessoas(aplicações cliente) usarão o sistema no dia-dia. Não é todo dia que são cadastrados novos funcionários ou alterados dados, mas o sistema vai receber várias consultas por dia (o quanto eu ainda não sei direito). A principal questão não é nem tanto a programação, mas quanto ao desempenho, backups, segurança... Por exemplo, se cair a energia, qual dos dois se sair melhor para manter a integridade do banco? Na verdade eu gostaria de utilizar o PostgreSQL porque já utilizei outras vezes, mas não sei a diferença entre ele e o Oracle. O único motivo que tenho em defesa do PostgreSQL é que ele é free e tem bastante documentação na internet.
[delphi-br] [OFFTOPIC] Oracle ou PostgreSQL?
Olá pessoal. Vou começar a desenvolver um sistema em Delphi e gostaria de saber se existe muita diferença entre Oracle ou PostgreSQL que é free. O servidor do banco de dados será um pc normal com Windows XP. O sistema é aparentemente simples, algo como um controle de funcionários com nome, endereço, se possui alguma doença, outros trabalhos, imagens de documentos... para 3000 funcionários(registros). Mais ou menos 10 pessoas(aplicações cliente) usarão o sistema no dia-dia. Não é todo dia que são cadastrados novos funcionários ou alterados dados, mas o sistema vai receber várias consultas por dia (o quanto eu ainda não sei direito). A principal questão não é nem tanto a programação, mas quanto ao desempenho, backups, segurança... Por exemplo, se cair a energia, qual dos dois se sair melhor para manter a integridade do banco? Na verdade eu gostaria de utilizar o PostgreSQL porque já utilizei outras vezes, mas não sei a diferença entre ele e o Oracle. O único motivo que tenho em defesa do PostgreSQL é que ele é free e tem bastante documentação na internet.
Re: [delphi-br] UTF-8
Se eu não me engano, os primeiros 127 caracteres do utf8 são iguais ao do ascii. Se seu texto só tiver caracteres ascii, acho que não vai ter diferença mesmo. On Wed, 19 Dec 2007 17:23:39 -400, Renato [EMAIL PROTECTED] wrote: Estou utilizando a função citada AnsiToUTF8 porém não tem efeito algum. Estou criando o arquivo de forma normal; var teste : TextFile; begin AssignFile( teste, 'C:\TesteFile.txt' ); try Rewrite( teste ); Write( teste, AnsiToUtf8( 'Texto Teste' ) ); finally CloseFile( teste ) ; end; Porém a codificação do arquivo continua como Ansi, o arquivo teria q ser criado de uma outra forma? Att.
[delphi-br] Adicionar planilhas do Excel no Delphi.
Olá pessoal. Estou exportando alguns dados para o Excel, eu consigo criar a planilha e exportar os dados, mas não estou conseguindo criar abas, tipo Planilha 1, Planilha 2... no mesmo arquivo. Tem que criar outro worksheet e adicionar ao workbook? Não sei direito o que tem que fazer. Quem puder ajudar vlw.
Re: [delphi-br] Como exibir caracteres normais e japoneses nos TEdits
Realmente interessante, mas estou com pé atrás. Não sei se isso irá gerar algum bug, principalmente porque não conheço os componentes do delphi, mas estou pensando em fazer alguns testes. Se funcionar vou te quer criar um TWideDBGrid também. On Nov 19, 2007 8:30 PM, Ricardo César Cardoso [EMAIL PROTECTED] wrote: Bom dia! Eu tinha o link para uma suíte de componentes que servia para traablhar com UniCODE, mas não consegui localizar novamente. Não sei se somente isso resolveria seu problema, mas pode ser um caminho, sim. Pesquisando no Google, achei este link [ http://www.nikse.dk/delphi.html#unicode ] parece ser bem interessante a abordagem e pode atender a sua necessidade. Sds, Ricardo.
Re: [delphi-br] Proibir Teclas no dbGrid - Como ?
Talves o melhor fosse melhor exibir um combobox para o usuário escolher o sexo. Se quiser da uma olhada aqui pra ver como faz, mas tá em inglês: http://delphi.about.com/od/usedbvcl/l/aa081903a.htm flw On Nov 18, 2007 11:36 AM, Flavio [EMAIL PROTECTED] wrote: Olá pessoal, boa noite, Meu caso é o seguinte: tenho uma célula no dbGrid que armazena o sexo da pessoa. Com isso, quero que, quando o usuário for digitar o sexo da pessoa, ele consiga somente digitar as letras 'f', 'F','m' ou 'M' e ignore todas as outras teclas. Como fazer isso ? Alguém me auxilia nessa questão ?? Obrigado pela atenção e tudo de bom... Flávio.
Re: [delphi-br] Alterar DBGrid sem afetar a tabela
Era isso mesmo, vlw On Nov 17, 2007 2:40 AM, Yahoo [EMAIL PROTECTED] wrote: Use o ClientDataset
Re: [delphi-br] Como exibir caracteres normais e japoneses nos TEdits
Vou poder utilizar os caracteres sem acento mesmo, mas o problema agora é consegui um Report que exiba caracteres japonês (Shift-jis). Na pior das hipóteses vou ter que criar os relatórios via código mesmo. On Nov 16, 2007 6:17 AM, Andreano Lanusse [EMAIL PROTECTED] wrote: Yoshio, Delphi suporta UNICODE na parte de banco de dados, a VCL está sendo preparada para suportar Unicode, essa sera uma das grandes novidades para a próxima versão e a prioridade número 1. Se você hoje quer utilizar componentes que suportem UNICODE em Delphi utilize TNT components: http://www.tntware.com/delphicontrols/unicode/ Abraços, Andreano Lanusse CodeGear Product Line Manager Evangelist Leader Latin America Blog: http://blogs.codegear.com/andreanolanusse Exemplos: http://cc.codegear.com/Author/38483 -Original Message- From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Yoshio Iwamoto Sent: Wednesday, November 14, 2007 8:58 PM To: Delphi-BR Subject: [delphi-br] Como exibir caracteres normais e japoneses nos TEdits Olá pessoal, este é minha primeira mensagem na lista. Estou desenvolvendo um programa para rodar em uma versão japonesa do Windows XP. Preferencialmente o programa precisa aceitar tanto caracteres normais(a, A, Ã, ç...) quanto caracteres japoneses. O programa é bem simples e estou utilizando o Access como banco de dados. Mas não estou conseguindo fazer com que os TEdits aceitem tanto caracteres normais com acentos quanto caracteres japoneses. O mais próximo que eu consegui disso foi utilizando a fonte MS Gothic com script japonês. -Na versão japonesa do Windows ele exibe os caracteres japoneses corretamente, mas ele não exibe os caracteres normais que possuem acentos. -Na versão brasileira(em português) do Windows ele exibe corretamente os caracteres normais (com e sem acento), mas o caracteres japoneses aparecem todos trocados por ?. A pergunta é: Como fazer o sistema de forma que os TEdits exibissem/aceitassem tanto caracteres japoneses e caracters normais com e sem acentos? Pensei em utilizar só caracteres UNICODE, pois acredito que seria idenpendente da versão do Windows XP (japonês, português) e aceitaria qualquer tipo de caracter. Mas não sei como mudar o sistema para aceitar caracteres UNICODE. Não sei se isso é feito mudando a fonte dos TEdits, alguma configuração do Delphi ou no próprio Windows XP. Gostaria de pergunta também qual o sistema de Reports eu devo usar, pois estou utilizando o Rave Report mas ele também está exibindo ? nos caracteres japoneses, até mesmo na versão japonesa do Windows. Por exemplo, no Rave Report eu mudo a fonte para MS Gothic, mas ele não salva com script japonês, sempre volta pro script ocidental da fonte. Agradeço a todos que puderem ajudar.
[delphi-br] Alterar DBGrid sem afetar a tabela
Como eu faço para alterar um dado do DBGrid (ADOTable) sem que ele altere realmente na tabela do banco de dados, por exemplo, subtrair 1 no campo quantidade do registro exibido? Isso é possível?
[delphi-br] Como exibir caracteres normais e japoneses nos TEdits
Olá pessoal, este é minha primeira mensagem na lista. Estou desenvolvendo um programa para rodar em uma versão japonesa do Windows XP. Preferencialmente o programa precisa aceitar tanto caracteres normais(a, A, Ã, ç...) quanto caracteres japoneses. O programa é bem simples e estou utilizando o Access como banco de dados. Mas não estou conseguindo fazer com que os TEdits aceitem tanto caracteres normais com acentos quanto caracteres japoneses. O mais próximo que eu consegui disso foi utilizando a fonte MS Gothic com script japonês. -Na versão japonesa do Windows ele exibe os caracteres japoneses corretamente, mas ele não exibe os caracteres normais que possuem acentos. -Na versão brasileira(em português) do Windows ele exibe corretamente os caracteres normais (com e sem acento), mas o caracteres japoneses aparecem todos trocados por ?. A pergunta é: Como fazer o sistema de forma que os TEdits exibissem/aceitassem tanto caracteres japoneses e caracters normais com e sem acentos? Pensei em utilizar só caracteres UNICODE, pois acredito que seria idenpendente da versão do Windows XP (japonês, português) e aceitaria qualquer tipo de caracter. Mas não sei como mudar o sistema para aceitar caracteres UNICODE. Não sei se isso é feito mudando a fonte dos TEdits, alguma configuração do Delphi ou no próprio Windows XP. Gostaria de pergunta também qual o sistema de Reports eu devo usar, pois estou utilizando o Rave Report mas ele também está exibindo ? nos caracteres japoneses, até mesmo na versão japonesa do Windows. Por exemplo, no Rave Report eu mudo a fonte para MS Gothic, mas ele não salva com script japonês, sempre volta pro script ocidental da fonte. Agradeço a todos que puderem ajudar.