[delphi-br] driver dbexpress da UIB com novas atualizacoes
://rapidshare.com/files/120098709/DBExpress_drivers.rar Um forte abraço a todos Alineri
Re: Res: [delphi-br] DBExpress x FireBird 2 x UIB IMPORTANTE LEIAM POR FAVOR
Ola Luciano, Estou utilizando firebird 2.1 + dbexpress com o Driver da UIB E esta tudo funcionando perfeitamente, inclusive campos Blobs. Vamos aos seu problema primeiro. Realmente o seu codigo utilizando o driver do Interbase funciona Ok, a diferenca acredito que esta realmente na forma como ambos os drivers tratam as transacoes no dbexpress. Faca o seguinte: SQLDataSet1. CommandText := 'insert into table (codigo) values (1)'; SQLDataSet1. ExecSQL; StartTransaction; commit; basta voce startar a transacao apos o execsql e nao antes. essa foi a unica diferenca que encontrei dos drivers para IB e FB. Blobs funcionam normalmente com o drive da UIB Testa ai e verifica se vai funcionar. Em relacao ao close comitar esse problema nao sei como resolver principalmente se estiver setado no driver da UIB Default Transaction = TACommit, ele vai comitar assim que o close for chamado. a unica forma para evitar seria ao dar um open em uma consulta relalizar todos os procedimentos dentro das suas rotinas e ao termino da um close. um problema que estou tendo e para compilar a a dll da UIB http://www.progdigy.com/modules.php?name=UIB existe um pacote novo a UIB2.1 ( componente de acesso ) so que essa dll utiliza as implementacoes desse pacote de componentes que ja esta adaptado para firebird 2.x, entao acredito que eeses error devam estar corrigidos, o problema e que nao consigo compilar,utilizo o BDS 2006, e nao reconhece o tipo de dados DBINAME e OIDViewFields no BDS 2006 existe DBINAME32 e OIDViewField se altero no font a Dll e gerada normalmente mas nao funciona. Em alguns foruns ja verifiquei que a Dll consegue ser compilada sem problemas na versao 7 do Delphi que nao tenho no momento. Um detalhe antes de compilar o pacote da UIB e compilar a Dll e necessario instalar o pacote SynEdit disponivel no link abaixo http://sourceforge.net/project/downloading.php?group_id=3221use_mirror=ufprfilename=SynEdit-2_0_6.zip75620534 quem sabe se com esse compilacao o problema de controle de transacao nao esta resolvido ? um forte abarco a todos []s alineri --- Em delphi-br@yahoogrupos.com.br, Luciano Calenzani Simões [EMAIL PROTECTED] escreveu Ninguém passou por este problema? Alguém está usando FireBirs 2 com esse driver UIB FireBird15? Luciano Calenzani Simões - Mensagem original De: Luciano Calenzani Simões [EMAIL PROTECTED] Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 29 de Maio de 2008 19:39:41 Assunto: [delphi-br] DBExpress x FireBird 2 x UIB FireBird15 O UIB FireBird15 para DBExpress com FireBird 2 tem problemas no gerenciamento de transação. Além daquele do campo BLOB já relatado nesta lista. Explico: Se dentro do contexto da transação tiver um SQLDataSet/SQLQuery /... fazendo um select em uma tabela, ao executar o SQLDataSet.Close ele commita a transação, e continua o procedimento normalmente. Se ocorrer algum erro após esse SQLDataSet.Close, as operações de I/O que foram feitas no início não serão desfeitas, mesmo sendo executado o RoolBack. Não deve estar acreditando, na hora eu também não acreditei. Fiz um teste com o mesmo código com o dirver Interbase e funciona perfeitamente. Mas esse driver não funciona perfeitamente com o FireBird 2. Isso só acontece com operação de SELECT, se dentro da transação só tiver INSERT, UPDATE e DELETE irá funcionar perfeitamente. Código exemplo (síntese): begin ... StartTransaction; try SQLDataSet1. CommandText := 'insert into table (codigo) values (1)'; SQLDataSet1. ExecSQL; SQLDataSet1. Close; SQLDataSet1. CommandText := 'select * from table'; SQLDataSet1. Open; SQLDataSet1. Close; // Aqui ele comita a transação automaticamente. // Quando chegar aqui, o 1º insert já está comitado, se houver erro daqui para frente ele não será desfeito. SQLDataSet1. CommandText := 'insert into table (codigo) values (2)'; SQLDataSet1. ExecSQL; SQLDataSet1. Close; CommitWork; except RollBack; end; end; Luciano Calenzani Simões Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
Re: Res: [delphi-br] DBExpress x FireBird 2 x UIB IMPORTANTE LEIAM POR FAVOR
Oi Eduardo, Isso depende, porque o execsql e uma instrucao que ira gerar gravacao no banco essa gravacao ainda nao esta salva, quando inicio uma transacao comecamos a salvar essa gravacao identificando atraves da transacao ( id transaction ) depois termino de salvar dando um commit. quando o Default Transaction = TACommit; sempre que um dataset for fechado ele vai dar um commit; se voce chamar uma transacao em seguida, vai dar erro, porque nao podemos iniciar transacoes em tabelas fechadas. no caso do nosso amigo que esta utilizando sqldatasets para as operacoes insert , delete, update e consulta, para dar um rollback utilizando o exemplo que passei seria assim try dataset1.close; Sqldataset1.commandtext := 'insert .'; Sqldataset1.parambyname( . SqlDataSet.ExecSQL; MinhaTransacao.TransactionID := 1; MinhaTransacao.IsolationLevel := xilREPEATABLEREAD; SQLConnection.StartTransaction(Transacao) SQLConnection.Commit(Transacao); SqlDataSet.Close; Except on Exc:Exception do begin SQLConnection.Rollback(Transacao); MessageDlg('Erro:'+#10#10+Exc.Message,mtError,[mbOK],0); end; end; dessa forma temos tudo transacoes commit e rollback voltando ao assunto de compilar uma nova dll , se alguem tiver o delphi 7 por ai, tenta compilar novamente essa dll da UIB novamente para verificar se tiveram realmente melhorias ou nao volto a dizer que o driver que utilizo e o UIB trabalho com meus sistemas com o formato que coloquei acima com campos blob e esta tudo funcionando mas confesso que se tivesse grana hoje compraria o drive da crlab, testei o demo, e o muito bom um forte abarco a todos []s alineri --- Em delphi-br@yahoogrupos.com.br, Eduardo Silva dos Santos [EMAIL PROTECTED] escreveu Faca o seguinte: SQLDataSet1. CommandText := 'insert into table (codigo) values (1)'; SQLDataSet1. ExecSQL; StartTransaction; commit; Olá Alineri... Startar a transação depois de executar o comando não faz sentido.. e se quiser fazer um rollback..?? 2008/5/30 alineri [EMAIL PROTECTED]: Ola Luciano, Estou utilizando firebird 2.1 + dbexpress com o Driver da UIB E esta tudo funcionando perfeitamente, inclusive campos Blobs. Vamos aos seu problema primeiro. Realmente o seu codigo utilizando o driver do Interbase funciona Ok, a diferenca acredito que esta realmente na forma como ambos os drivers tratam as transacoes no dbexpress. Faca o seguinte: SQLDataSet1. CommandText := 'insert into table (codigo) values (1)'; SQLDataSet1. ExecSQL; StartTransaction; commit; basta voce startar a transacao apos o execsql e nao antes. essa foi a unica diferenca que encontrei dos drivers para IB e FB. Blobs funcionam normalmente com o drive da UIB Testa ai e verifica se vai funcionar. Em relacao ao close comitar esse problema nao sei como resolver principalmente se estiver setado no driver da UIB Default Transaction = TACommit, ele vai comitar assim que o close for chamado. a unica forma para evitar seria ao dar um open em uma consulta relalizar todos os procedimentos dentro das suas rotinas e ao termino da um close. um problema que estou tendo e para compilar a a dll da UIB http://www.progdigy.com/modules.php?name=UIB existe um pacote novo a UIB2.1 ( componente de acesso ) so que essa dll utiliza as implementacoes desse pacote de componentes que ja esta adaptado para firebird 2.x, entao acredito que eeses error devam estar corrigidos, o problema e que nao consigo compilar,utilizo o BDS 2006, e nao reconhece o tipo de dados DBINAME e OIDViewFields no BDS 2006 existe DBINAME32 e OIDViewField se altero no font a Dll e gerada normalmente mas nao funciona. Em alguns foruns ja verifiquei que a Dll consegue ser compilada sem problemas na versao 7 do Delphi que nao tenho no momento. Um detalhe antes de compilar o pacote da UIB e compilar a Dll e necessario instalar o pacote SynEdit disponivel no link abaixo http://sourceforge.net/project/downloading.php?group_id=3221use_mirror=ufprfilename=SynEdit-2_0_6.zip75620534 quem sabe se com esse compilacao o problema de controle de transacao nao esta resolvido ? um forte abarco a todos []s alineri --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br, Luciano Calenzani Simões simoesluciano@ escreveu Ninguém passou por este problema? Alguém está usando FireBirs 2 com esse driver UIB FireBird15? Luciano Calenzani Simões - Mensagem original De: Luciano Calenzani Simões simoesluciano@ Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Quinta-feira, 29 de Maio de 2008 19:39:41 Assunto: [delphi-br] DBExpress x FireBird 2 x UIB FireBird15 O UIB FireBird15 para DBExpress com FireBird 2 tem problemas no gerenciamento de transação. Além daquele do campo BLOB já relatado nesta lista. Explico: Se dentro do
[delphi-br] redimensionar form scaleBy nao funciona
Ola Pessoal, Estou precisando adaptar uim sistema para uma empresa que nao tem padrao de computadores logo temos varias configuracoes de monitores crt 15 polegadas a lcd de 19. a versao do meu delphi e o bds 2006 e meu equipamento de producao e um notebook de 15 polegadas wide com resolucaod e 1280 x 800 peguei aquele exemplo classico de redimensionamento de forms aqui mesmo no forum e nao funiona quando testo com outras resolucoes como 800 x 600 e 1024 x 768 segue abaixo o codigo: implementation const ScreenWidth: LongInt = 1280; ScreenHeight: LongInt = 800; procedure TForm3.FormCreate(Sender: TObject); var i: integer; begin scaled := true; if (screen.width ScreenWidth) then begin height := longint(height) * longint(screen.height) DIV ScreenHeight; width := longint(width) * longint(screen.width) DIV ScreenWidth; scaleBy(screen.width, ScreenWidth); for i := componentCount - 1 downto 0 do with components[i] do begin if GetPropInfo(ClassInfo, 'font') nil then font.size := (screen.width DIV ScreenWidth) * font.size; end; end; end; Deixo a font como arial, deixo o espaco de apoximadamente 5 px entre os componentes, deixo a propriedade parantfont = true e autosize do form e dos componenets = true e quando mudo a resolucao o que acontece e o seguinte, o tamanho do form e redimensionado, os componentes tambem, mas acabam um em cima do outro mesmo com espacos grandes e a font dos componentes ficam gigantes queria saber se algum tem algum exemplo que pudesse me enviar, um exemplo para testar, ou alguma dica de alguma coisa que esteja passando em branco e ainda nao percebi desde ja agradeco a todos um forte abraco alineri
[delphi-br] Re: distancia entre cidades para sistema de transportadora qual o melhor metodo
Vamos que vamos, valeu ai pessoal por todas as dicas e obervacoes que fizeram Bem Andreano e exatamente isso, por incrivel que pareca nao poderei fazer esse processo online, senao seria moleza. ja deram essa dica aqui na lista de gerar uma lista de cidades e cruza-las gerando as informacoes pelo google, vou fazer uns testes a respeito e posto aqui. com relacao a brincadeira de dar uma voltinha pelo Brasil, agradeco bastante pois passei essa ideia para cliente e o mesmo adorou, afinal o ganha pao de uma transportadora e isso mesmo, rodar o Brasil fazendo entrega e coleta, e o motorista do caminhao ainda pode agregar mais os dados com informacoes sobre qualidade da estrada, postos de gasolina, transito etc... de qualquer forma preciso dos dados para gerar ao cliente um norte a seguir em rotas que ainda nao foram feitas sem contar para a base de calculo do frete e calculo de custos agredados ao frete ( combustivel, pneu, manutencoes emergenciais etc... ) mais uma vez agradeco a todos e posto aqui na lista todos os progressos. um forte abraco alineri --- Em delphi-br@yahoogrupos.com.br, Andreano Lanusse [EMAIL PROTECTED] escreveu Você disse que não pode usar o Google, entendo que não pode fazer isso online, certo? Mas você poderia pegar a lista de cidades e cruzar todas as possibilidade de caminho fazendo o cálculo pelo google para gerar um banco de dados com todas as possibilidades, ou seja, você usa o google para gerar a informação apenas uma vez e seu cliente consulta o banco de dados, poderia? Quando fizemos o cálculo, pegamos a informação de latitude e longitude do IBGE, eles tem a lat/long de todas as cidades do Brasil, fizemos uma conversão para poder calcular e ai foi. Quando você pega a lat/long de uma cidade, ela aponta para o ponto central, exemplo: em São Paulo é a praça da Sé, no caso de trechos de um ponto de São Paulo para outro ponto de São Paulo, você terá de dividir SP em vários pontos, pegando a lat/long de cada um. Tenta ver se essa do Google resolve o seu problema, na minha opinião seria o caminho mais fácil e preciso. []'s Andreano From: delphi-br@yahoogrupos.com.br on behalf of alineri Sent: Sun 13-Apr-08 16:09 To: delphi-br@yahoogrupos.com.br Subject: [delphi-br] Re: distancia entre cidades para sistema de transportadora qual o melhor metodo Ola pessoal, mais uam vez obrigado pela ajuda de todos. bem, em relacao a precisao no calculo das distancias sei que e dificil conseguir com coordenas geograficas, mas como voce falou Adreano, se consegui-se um calculo com margem de erro como falou que me levasse ao mais proximo possivel ja estaria otimo, se puder me indicar onde posso encontrar informacoes a respeito seria uma grande ajuda. Julio Cesar, tive essa ideia justamente hoje, de passar para webservice uma sequencia de rotas ( as mais utilizadas pelo cliente ) e popular uma tabela com os resultados, so acho que nao posso abusar das requisicoes para nao ter problemas futuros, essa e uma ideia que tambem gostei. Nao poder utilizar a API do google e que me pegou, estava estudando a API ontem ela e uma mao na roda, um presente do google. Tambem gostei da ideia do Alexandre Cesar Tabarin, ja peguei o guia 4 rodas para analisar e bem interessante, ele calcula a distancia bem proxima ao do google maps, e ainda traca a rotas entre as rodovias, ja acessei o projeto http://www.tracksource.org.br http://www.tracksource.org.br/ onde tem varios mapas so estou tendo dificuldades de encontrar disponivel para download o software destinator, se alguem souber o link. e por ultimo, comunico a todos que esse modulo do projeto para calculo e distancia entre as cidades vou deixar publico, todas as documentacoes, referencias, base de dados, e fontes deixarei disponivel na comunidade e em algum sourceforge da vida. porque acho que esse tipo de dado tinha que ser publico principalmente no que se diz respeito as rodovias estaduais e federais, por que somos nos que bancamos com nossos impostos e pedagios. todo o progresso que obtiver comunicarei a voces e assim que tiver um material que seja viavel torna-lo publico, assim o farei. espero continuar contando com a ajuda de todos um forte abraco a todos alineri --- Em delphi-br@yahoogrupos.com.br mailto:delphi-br% 40yahoogrupos.com.br , Andreano Lanusse andreano.lanusse@ escreveu Alineri, Já desenvolvi um sistema que fazia isso a uns 7 anos atrás, foi baseado em latitude e longetude, que não é preciso para percurso terrestre, se fosse aéreo tudo bem, usavamos a margem de erro, mas em vários casos onde você tem rotas com montanhas, pontes, desvios ficava muito fora, ao longo dos anos fomos aperfeiçoando para minimizar este erro, mas se você precisa com base na distância calculos exatos, latitude e longetitude não é o caminho. Uma solução
[delphi-br] Re: distancia entre cidades para sistema de transportadora qual o melhor metodo
Valeu pela dia Alexandre, Vou buscar esse livro com certeza Um forte abraco a todos alineri --- Em delphi-br@yahoogrupos.com.br, Alexandre Rodrigues [EMAIL PROTECTED] escreveu Cara, se tu popular uma tabela com as distâncias entre cidades, no livro C Completo e Total tem um exemplo de inteligência artificial que faz justamente o tu quer. Ou seja com base nas distância entre as cidades ele calcula a rota com a menor distância. Na verdade ele dedica um capitulo inteiro sobre isso, acho que vale a pena conferir. alineri escreveu: Ola Pessoal, Primeiro agradeco as observacoes e dicas de todos :) bem, passei alguns dias pesquisando bastante sobre o assunto primeiro explicarei minha necessidade. Estou desenvolvendo um projeto de um sistema de transportadora que tem como um dos seus objetivos calcular a distancias entre as cidades e posteriormente determinar a sua rota. nao e objetivo desenvolver um aplicativo de roteirizacao que determine o menor caminhor. O objetivo e ter como calcular os dados de distancia rodoviaria entre as cidades e posteriomente a sua rota rodoviaria ( rodovias federais e estaduais ) o problema que estou encontrando esta justamente em onde conseguir os dados. ja consegui os dados de distancia geodesicas das cidades, e assim consigo as distancias entre as cidades, so que e diferente do que distancia rodoviaria ( que e a distancia percorrida ). Verifiquei que o programa do guia 4 rodas utiliza distancias geodesicas com latitude e longitude para realizar os calculos das distancia e que deve aplicar alguma margem de calculo para se aproximar da distancia rodoviaria real. o site http://www.abcr.org.br/geode/index.php http://www.abcr.org.br/geode/index.php tambem utiliza calculo com coordenadas geodesicas e tambem nao se aproxima da realidade. encontrei ainda no site activedelphi um companheiro que disponibilizou um sistema com fonte em delphi para calculo de distancia geodesica que permite inclusive informar uma margem para aproximacao da distancia rodoviaria. http://www.tiggra.com.br/geoTiggra/GEOCalc.zip http://www.tiggra.com.br/geoTiggra/GEOCalc.zip ai surgiu uam duvida em relacao a calculo com coordenada geodesicas. Se aplicar as coordenadas de latitude e longitude de duas cidades nas ferramentas descritas acima e no google maps as distancias em sua maioria sao diferentes, consegui a maior proximacao entre as ferramentas na Distancia Rio X Sao Paulo. Nas outras cidades que testei os resultados deram diferencas inclusive gritantes. Dessa forma nao senti seguranca em aplicar calculos com coordenadas geodesicas, principalmente porque conheco pouco sobre o assunto. Entao verifiquei que para obter uma maior precisao sera necessario obter os dados das distancias rodoviarias ( e o nome das rodovias ) dessa forma sera possivel calcular com maior precisao a distancia entre cidades e determinar a sua rota rodoviaria. a questao e, onde conseguir esses dados ? no site do ministerio dos transportes tem uma planilha com a distancia rodoviaria das principais cidades brasileiras mas sem mencionar as rodovias. http://www.transportes.gov.br/bit/distancias/distancias.xls http://www.transportes.gov.br/bit/distancias/distancias.xls Por especificacao do projeto nao posso utilizar API do google maps nem o webservice do maplink, o sistema tem que fazer esses calculos. e entao pessoal oq voces sugerem ? o pessoal que ja desenvolve aplicacao de roteirizacao, onde posso conseguir mais material de estudo e onde posso conseguir esses dados ? somente os dados mesmo, nao vou desenvolver aplicacao que segmente o percurso em mapas, isso requer muito conhecimento em geoprocessameto e processamento de imagens digitais o que nao tenho. um forte abraco a todos alineri --- Em delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br, Odimar odimar_a@ escreveu Ola tem um site chamado MapLink( http://maplink.uol.com.br http://maplink.uol.com.br ) eles tem um servico de webservice que pode ser integrado a qualquer sistema inclusive em delphi. Esse servico é pago mas tem um fazer uns testes gratis e baixar a documentação Odimar To: delphi-br@: seurico@: Thu, 10 Apr 2008 13:24:24 - 0300Subject: Re: [delphi-br] distancia entre cidades para sistema de transportadora qual o melhor metodo Hm... eu daria uma boa olhada na Google API, especialmente GoogleMaps/Earth.Em 09/04/08, alineri alineri@ escreveu: ola pessoal, acho que e um assunto que pode interessar a muitos. estou iniciando um projeto que tem como objetivo calcular a distancia e se for possivel as provaveis rotas rodoviarias entre duas cidades. sei que podemos fazer isso via equipamentos gps ou site como apontador e google maps mas a necessidade principal e
[delphi-br] Re: distancia entre cidades para sistema de transportadora qual o melhor metodo
Ola pessoal, mais uam vez obrigado pela ajuda de todos. bem, em relacao a precisao no calculo das distancias sei que e dificil conseguir com coordenas geograficas, mas como voce falou Adreano, se consegui-se um calculo com margem de erro como falou que me levasse ao mais proximo possivel ja estaria otimo, se puder me indicar onde posso encontrar informacoes a respeito seria uma grande ajuda. Julio Cesar, tive essa ideia justamente hoje, de passar para webservice uma sequencia de rotas ( as mais utilizadas pelo cliente ) e popular uma tabela com os resultados, so acho que nao posso abusar das requisicoes para nao ter problemas futuros, essa e uma ideia que tambem gostei. Nao poder utilizar a API do google e que me pegou, estava estudando a API ontem ela e uma mao na roda, um presente do google. Tambem gostei da ideia do Alexandre Cesar Tabarin, ja peguei o guia 4 rodas para analisar e bem interessante, ele calcula a distancia bem proxima ao do google maps, e ainda traca a rotas entre as rodovias, ja acessei o projeto http://www.tracksource.org.br onde tem varios mapas so estou tendo dificuldades de encontrar disponivel para download o software destinator, se alguem souber o link. e por ultimo, comunico a todos que esse modulo do projeto para calculo e distancia entre as cidades vou deixar publico, todas as documentacoes, referencias, base de dados, e fontes deixarei disponivel na comunidade e em algum sourceforge da vida. porque acho que esse tipo de dado tinha que ser publico principalmente no que se diz respeito as rodovias estaduais e federais, por que somos nos que bancamos com nossos impostos e pedagios. todo o progresso que obtiver comunicarei a voces e assim que tiver um material que seja viavel torna-lo publico, assim o farei. espero continuar contando com a ajuda de todos um forte abraco a todos alineri --- Em delphi-br@yahoogrupos.com.br, Andreano Lanusse [EMAIL PROTECTED] escreveu Alineri, Já desenvolvi um sistema que fazia isso a uns 7 anos atrás, foi baseado em latitude e longetude, que não é preciso para percurso terrestre, se fosse aéreo tudo bem, usavamos a margem de erro, mas em vários casos onde você tem rotas com montanhas, pontes, desvios ficava muito fora, ao longo dos anos fomos aperfeiçoando para minimizar este erro, mas se você precisa com base na distância calculos exatos, latitude e longetitude não é o caminho. Uma solução seria usar a API do google, mas você disse que não pode. Creio que você estaria considerando o tráfego, se sim, o Google no Brasil ainda não dá esta informação. Então te recomendo contactar a Webraska Brasil (http://www.webraska.com.br/), eles são os responsáveis pelo Apontador, e tem toda essa informação precisa e acho que em alguma cidades está integrado com o tráfego local, não será de graça mas certamente eles tem tudo isso e fornecem serviços para diversas empresa de transporte, call center, etc... []'s Andreano Lanusse CodeGear Product Line Manager Evangelist Leader Latin America Blog: http://blogs.codegear.com/andreanolanusse Exemplos: http://cc.codegear.com/Author/38483 From: delphi-br@yahoogrupos.com.br [mailto:delphi- [EMAIL PROTECTED] On Behalf Of Marcelo Moacir Florindo Sent: Saturday, April 12, 2008 8:09 PM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Re: distancia entre cidades para sistema de transportadora qual o melhor metodo Isto é um pouco complicado de obter...afinalos mapas rodoviarios não sei com que tipo de régua eles usamhehehe pois realmente nunca bate a distancia.já peguei distancia de 100 km a menos... (ainda bem) Existe uma situação que é complicada ... uma cidade pode ter N entradas de N lugares Bem.se a tua necessidade é regional (tipo região sul) e a empresa tem rotas especificas poderás implementar em uma tabela de distâncias e cidades... acho que vale a pena perder um tempo e fazer uns calculos em cima de algumas rodovias e suas principais cidades...e incrementando aos poucos.. Garanto que será mais rapido do que ficar dependendo de dados de terceiros... E acho que terás uma estrutura bem exclusiva. :) Abraços Marcelo Em 12/04/08, alineri [EMAIL PROTECTED] mailto:alineri%40yahoo.com escreveu: Ola Pessoal, Primeiro agradeco as observacoes e dicas de todos :) bem, passei alguns dias pesquisando bastante sobre o assunto primeiro explicarei minha necessidade. Estou desenvolvendo um projeto de um sistema de transportadora que tem como um dos seus objetivos calcular a distancias entre as cidades e posteriormente determinar a sua rota. nao e objetivo desenvolver um aplicativo de roteirizacao que determine o menor caminhor. O objetivo e ter como calcular os dados de distancia rodoviaria entre as cidades e posteriomente a sua rota rodoviaria ( rodovias federais e estaduais
[delphi-br] Re: distancia entre cidades para sistema de transportadora qual o melhor metodo
Ola Pessoal, Primeiro agradeco as observacoes e dicas de todos :) bem, passei alguns dias pesquisando bastante sobre o assunto primeiro explicarei minha necessidade. Estou desenvolvendo um projeto de um sistema de transportadora que tem como um dos seus objetivos calcular a distancias entre as cidades e posteriormente determinar a sua rota. nao e objetivo desenvolver um aplicativo de roteirizacao que determine o menor caminhor. O objetivo e ter como calcular os dados de distancia rodoviaria entre as cidades e posteriomente a sua rota rodoviaria ( rodovias federais e estaduais ) o problema que estou encontrando esta justamente em onde conseguir os dados. ja consegui os dados de distancia geodesicas das cidades, e assim consigo as distancias entre as cidades, so que e diferente do que distancia rodoviaria ( que e a distancia percorrida ). Verifiquei que o programa do guia 4 rodas utiliza distancias geodesicas com latitude e longitude para realizar os calculos das distancia e que deve aplicar alguma margem de calculo para se aproximar da distancia rodoviaria real. o site http://www.abcr.org.br/geode/index.php tambem utiliza calculo com coordenadas geodesicas e tambem nao se aproxima da realidade. encontrei ainda no site activedelphi um companheiro que disponibilizou um sistema com fonte em delphi para calculo de distancia geodesica que permite inclusive informar uma margem para aproximacao da distancia rodoviaria. http://www.tiggra.com.br/geoTiggra/GEOCalc.zip ai surgiu uam duvida em relacao a calculo com coordenada geodesicas. Se aplicar as coordenadas de latitude e longitude de duas cidades nas ferramentas descritas acima e no google maps as distancias em sua maioria sao diferentes, consegui a maior proximacao entre as ferramentas na Distancia Rio X Sao Paulo. Nas outras cidades que testei os resultados deram diferencas inclusive gritantes. Dessa forma nao senti seguranca em aplicar calculos com coordenadas geodesicas, principalmente porque conheco pouco sobre o assunto. Entao verifiquei que para obter uma maior precisao sera necessario obter os dados das distancias rodoviarias ( e o nome das rodovias ) dessa forma sera possivel calcular com maior precisao a distancia entre cidades e determinar a sua rota rodoviaria. a questao e, onde conseguir esses dados ? no site do ministerio dos transportes tem uma planilha com a distancia rodoviaria das principais cidades brasileiras mas sem mencionar as rodovias. http://www.transportes.gov.br/bit/distancias/distancias.xls Por especificacao do projeto nao posso utilizar API do google maps nem o webservice do maplink, o sistema tem que fazer esses calculos. e entao pessoal oq voces sugerem ? o pessoal que ja desenvolve aplicacao de roteirizacao, onde posso conseguir mais material de estudo e onde posso conseguir esses dados ? somente os dados mesmo, nao vou desenvolver aplicacao que segmente o percurso em mapas, isso requer muito conhecimento em geoprocessameto e processamento de imagens digitais o que nao tenho. um forte abraco a todos alineri --- Em delphi-br@yahoogrupos.com.br, Odimar [EMAIL PROTECTED] escreveu Ola tem um site chamado MapLink( http://maplink.uol.com.br ) eles tem um servico de webservice que pode ser integrado a qualquer sistema inclusive em delphi. Esse servico é pago mas tem um fazer uns testes gratis e baixar a documentação Odimar To: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Thu, 10 Apr 2008 13:24:24 - 0300Subject: Re: [delphi-br] distancia entre cidades para sistema de transportadora qual o melhor metodo Hm... eu daria uma boa olhada na Google API, especialmente GoogleMaps/Earth.Em 09/04/08, alineri [EMAIL PROTECTED] escreveu: ola pessoal, acho que e um assunto que pode interessar a muitos. estou iniciando um projeto que tem como objetivo calcular a distancia e se for possivel as provaveis rotas rodoviarias entre duas cidades. sei que podemos fazer isso via equipamentos gps ou site como apontador e google maps mas a necessidade principal e calcular a distancia entre duas cidades. ja consegui uma planilha no site do dnit.gov.br que tem a distancia em km das principais cidades do brasil. mas a intencao e calcular a distancia de todas as cidades. por isso a pergunta qual o melhor metodo ? pela diferenca da longitude e latitude de duas cidades conseguimos entrar a distancia geografica delas, mas nao e a mesma coisa que a distancia rodoviaria por exemplo, essa solucao nao atenderia a uma transportadora por exemplo por a distancia percorrida pelas rodovias sera na maioria das vezes maior que a distanca geografica ( latitude e longitude ) pensei em conseguir os dados rodoviarios ( rodovia e tamanho da rodovia entre as cidades ) assim tambem conseguiria calcular a distancia entre elas, com a vantagem de tracar a rota, mas a pergunta e onde conseguir esses dados rodoviarios ? ja pesquisei em varios site do governo e nao encontro. outra forma
[delphi-br] showmodal, como acessar um fsMDIChild
Ola pessoal, tem um formulario que e fsMDIChild, que carrega uma tela de pesquisa que e fsnormal em showmodal essa tela de pesquisa tem um listview onde e carregado os resultados da pesquisa. no evento onselectitem eu tento passar os valores que estao no listview da tela de pesquisa para os edits do formulario fsMDIChild, o que gera sempre erro de acesso de memoria. nao tenho como habilitar ( enabled = true ) os edits do formulario fsMDIChild para que esses possam receber os valores que foram selecionados no listview do formulario de pesquisa fsnormal ? um forte abarco a todos alineri
[delphi-br] ajuda para executar procedure no adostoredproc
Ola pessoal, Estou utilziando o BDS 2006 + ADO + Oracle XE Tenho uma procedure que tem como objetivo retornar os dados de um endereco informando o cep ( essa procedure foi baseada em uma do firebird disponivel na internet com dados de ceps) A procedure esta funcionando, rodo ela no oracle perfeitamente, agora quando uso o adostoredproc.open tenho o seguinte erro: Commandtext does not return a result set Se utilizo um objeto ADOQuery tenho outro erro informando que os paramettros estao errados, e todos ja foram verificados. o que pode ser? segue abaixo o codigo da procedure: create or replace PROCEDURE LISTA_LUGAR ( PCEP IN VARCHAR2, PESTADO OUT VARCHAR2, PCIDADE OUT VARCHAR2, PBAIRRO OUT VARCHAR2, PENDERECO OUT VARCHAR2, PCEPS OUT VARCHAR2, PCOMPLEMENTO OUT VARCHAR2 ) AS begin select a.uf_sigla, b.cidade_descricao, c.bairro_descricao, d.endereco_logradouro, d.endereco_cep, d.endereco_complemento into pestado, pcidade, pbairro, pendereco, pceps, pcomplemento from uf a,cidade b, bairro c, endereco d where (a.uf_codigo = b.uf_codigo) and (b.cidade_codigo = c.cidade_codigo) and (c.bairro_codigo = d.bairro_codigo) and (d.endereco_cep = pcep) order by c.bairro_descricao,d.endereco_logradouro,d.endereco_cep; end LISTA_LUGAR; um forte abraco a todos alineri
[delphi-br] delphi + dbexpress + oracle + driver
bom dia pessoal, ja li e re-li todos os documentos da lista e de outros foruns e blogs e acho que o problema pelo que pesquisei e o driver do dbexpress para oracle que acompanha o delphi. alguem conhece algum driver dbexpress para oracle que seja free ? testei com o crlab e nao tive problemas mas nao momento nao disponho de recursos para compra-lo. existe algum outro fornecedor ? oq voces indicam
Re: RES: [delphi-br] delphi + dbexpress + oracle + driver
Estou utilizando o o BDS 2006 e o Oracle XE a conexao e realizada numa boa, o problema esta quando utilizo o componente SQLStoredProc para executar uma procedure, fica dando direto um erro ORA-06512 E ORA-06502 estou utilizando uma tabela para teste com dois campos: CODIGO - NUMBER DESCRICAO - VARCHAR2 e da sempre erro na inclusao ( os erros do oracle descrito acima ) testando o drive da crlab funciona na boa abracos alineri --- Em delphi-br@yahoogrupos.com.br, Bruno Lichot [EMAIL PROTECTED] escreveu Qual versão do Delphi você esta utilizando e qual versão do Oracle? Abs BL De: delphi-br@yahoogrupos.com.br [mailto:delphi- [EMAIL PROTECTED] Em nome de alineri Enviada em: quarta-feira, 27 de fevereiro de 2008 10:33 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] delphi + dbexpress + oracle + driver bom dia pessoal, ja li e re-li todos os documentos da lista e de outros foruns e blogs e acho que o problema pelo que pesquisei e o driver do dbexpress para oracle que acompanha o delphi. alguem conhece algum driver dbexpress para oracle que seja free ? testei com o crlab e nao tive problemas mas nao momento nao disponho de recursos para compra-lo. existe algum outro fornecedor ? oq voces indicam [As partes desta mensagem que não continham texto foram removidas]
RES: [delphi-br] delphi + dbexpress + oracle + driver - resolvi com ADO
Oi pessoal, Bem parece que realmente existe alguma incompatibilidade no driver do dbexpress que vem na plataforma BDS 2006. Simplesmente o componente SQLStoredProc nao funciona na versao Oracle XE, apresenta varias incompatibilidades nos parametros de tipo de dados. Resolvi da seguinte forma: Estou usando os componentes de acesso ADO, se sao os mais indicados nao sei, o que sei e que consigo rodar procedures do oracle, e o tempo de conexao e resposta e bem razoavel, e sinceramente nao deixou muito a desejar em relacao ao driver da crlab ( testei a versao demo ). Agradeco a sugestao do Bruno de tentar fazer um upgrade mas mesmo com um bom desconto e preciso ter caixa ($). Verifiquei que na versao RAD 2007 ainda tem suporte a ADO entao nao me preocupo por enquanto, e claro que utilizar o DBExpress seria muito melhor, principalmente com relacao a garantia de continuidade. O pessoal da CodeGear que poderia pensar no assunto em disponibilizar para as versoes anteriores do Delphi atualizacoes ( correcoes ) do componente de acesso a dados tao defendido por voces ( dbexpress ), porque investir pesado em uma versao do delphi, para ainda ter que investir em driver de terceiros, ou so ter a correcao do produto comprando a versao mais atual e um pouco demais ao meu ver. bem e so uma sugestao um forte abraco a todos alineri --- Em delphi-br@yahoogrupos.com.br, Bruno Lichot [EMAIL PROTECTED] escreveu Acredito que este problema seja por conta da versão do driver do BDS 2006, que em sua época de lançamento não dava suporte ao 10g. Este erro no Delphi 2007 com DBX 4 não está ocorrendo. Por falar nisso, a CodeGear está com uma promoção para quem já tem qualquer licença de produtos Borland/CodeGear. Elas valem 60% de desconto na aquisição de Qualquer Delphi ou RAD Studio New User. Bom só pra constar caso alguém não tenha recebido o email da promoção. Quem estiver interessado é só entrar em contato diretamente com a Graça (11-2165-8048 / [EMAIL PROTECTED]) que ela fornecerá todas as informações e valores. Abs BL De: delphi-br@yahoogrupos.com.br [mailto:delphi- [EMAIL PROTECTED] Em nome de alineri Enviada em: quarta-feira, 27 de fevereiro de 2008 11:53 Para: delphi-br@yahoogrupos.com.br Assunto: Re: RES: [delphi-br] delphi + dbexpress + oracle + driver Estou utilizando o o BDS 2006 e o Oracle XE a conexao e realizada numa boa, o problema esta quando utilizo o componente SQLStoredProc para executar uma procedure, fica dando direto um erro ORA-06512 E ORA-06502 estou utilizando uma tabela para teste com dois campos: CODIGO - NUMBER DESCRICAO - VARCHAR2 e da sempre erro na inclusao ( os erros do oracle descrito acima ) testando o drive da crlab funciona na boa abracos alineri --- Em delphi-br@yahoogrupos.com.br mailto:delphi-br% 40yahoogrupos.com.br , Bruno Lichot bruno.lichot@ escreveu Qual versão do Delphi você esta utilizando e qual versão do Oracle? Abs BL De: delphi-br@yahoogrupos.com.br mailto:delphi-br% 40yahoogrupos.com.br [mailto:delphi- [EMAIL PROTECTED] mailto:br%40yahoogrupos.com.br ] Em nome de alineri Enviada em: quarta-feira, 27 de fevereiro de 2008 10:33 Para: delphi-br@yahoogrupos.com.br mailto:delphi-br% 40yahoogrupos.com.br Assunto: [delphi-br] delphi + dbexpress + oracle + driver bom dia pessoal, ja li e re-li todos os documentos da lista e de outros foruns e blogs e acho que o problema pelo que pesquisei e o driver do dbexpress para oracle que acompanha o delphi. alguem conhece algum driver dbexpress para oracle que seja free ? testei com o crlab e nao tive problemas mas nao momento nao disponho de recursos para compra-lo. existe algum outro fornecedor ? oq voces indicam [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] DBEXPRESS + SQLStoredProc + ORACLE - isso realmente funciona ?
Ola Pessoal, Estou atravessando madrugada a dentro e ate agora nao estou conseguindo executar minhas procedures do Oracle utilizando SQLStoredProc do Dbexpress. A cada momento e um erro diferente, sera que essa combinacao realmente funciona ? Estou fazendo um teste basico, uma procedure que inclui registro em dois campos, ( Codigo - Numerico, Descricao - Texto ) a procedure foi testada diretamente no oracle e esta funcionando. Os erros sao o seguinte: ORA-06502 e ORA-06512 esse erro se referindo a campo Codigo que e numerico No Oracle esse campo esta como Number e em params do SQLStoredProc o datatype esta como ftFMTBcd, e o valor passado para esse parametro vai como AsBCD. Ja testei com Float, com Integer e continua dando os mesmos erros. Qual seria a configuracao correta desses parametros do Delphi ? Ou o Dbexpress realmente nao e recomendado para o Oracle ? Versoes que estou utilizando Oracle XE Delphi 2006 com update Windows XP ´professional Um forte abraco a Todos alineri
Re: RES: RES: [delphi-br] dependência funcional normalização - detalhando
Caro Gerhard, Esclareceu e muito as minhas dúvidas. Muito obrigado Um forte abraço Alinei --- Em delphi-br@yahoogrupos.com.br, Gerhard Roger Nack [EMAIL PROTECTED] escreveu Bem vamos lá, a situação 2 eu, particularmente faria assim: Situação 2: TAB_PESSOA CODPESSOA NOME CPFCNPJ DATACAD CODENDERECO CODTELEFONE IDEMAIL EMAIL SEXO ( M - F ) DATANASC TAB_ENDERECO CODENDERECO TIPOLOGADOURO ENDERECO NUMERO COMPLEMENTO CIDADE UF CEP TAB_TELEFONE CODTELEFONE IDTELEFONE TELEFONE TPTELEFONE ( TRABALHO - RESIDENCIAL - FAX - CELULAR ) Ou seja, eu não criaria uma tabela para email pois é uma informação que dificilmente irá se repetir e geraria um overhead muito na hora dos join's, como também não criaria a tabela SEXO_DATANASC pelo mesmo motivo. Você colocou o CODPESSOA em todas as tabelas, o correto seria cada tabela ter o seu código próprio (ENDERECO, TELEFONE, etc) e a PESSOA ter o CODENDERECO, CODTELEFONE, etc., pois do contrario você nunca poderia utilizar um mesmo TELEFONE para mais de uma pessoa. Isso inviabilizaria a criação dessas tabelas de referência, pois no fundo você sempre teria um relacionamento de 1-1 e nunca de 1-N que é justamente o que justifica a normalização. Seria melhor normalizaria a tabela ENDERECO para algo assim: TAB_ENDERECO CODENDERECO TIPOLOGADOURO ENDERECO NUMERO COMPLEMENTO CODCIDADE CEP TAB_CIDADE CODCIDADE CIDADE UF Mas particularmente eu ainda utilizaria o campo CEP juntamente com a tabelas do correio ou da GSE Soft, normalizando a tabela ENDERECO para algo assim: TAB_ENDERECO CODENDERECO CEP NUMERO COMPLEMENTO Ou seja, deixaria apenas o CEP e restante dos dados como Endereco, Tipo Logradouro, Cidade, UF e Bairro buscaria na base dos correios e só teria os dados específicos daquele endereço como NUMERO e COMPLEMENTO. Resumindo, deve-se normalizar as tabelas sim, porém o bom censo deve prevalecer pois nem sempre pode-se levar a normalização até o último nível possível pois degradaria muito a performance do sistema. OBS: Para fins de clareza no email deixei o prefixo TAB_ que você utilizou, mas jamais, jamais utilizaria isso no mundo real, pois como se trata de uma tabela e sabendo-se que todas elas encontram-se no banco de dados não se justifica utilizar esse prefixo que seria igual a todas elas. Espero ter esclarecido um pouco, e qualquer dúvida estamos ai. Bem mas vamos ao assunto que venho estudando. Estou desenvolvendo um projeto que tem por objetivo ser multi- banco, estou utilizando o Oracle XE e o Firebird 2.0 para testes com tabelas que têm em média 100.000 registros Pesquisando o assunto, tenho observado que depende muito das regras de negócio que cada um adota em seus projetos de modelagem. Minha dúvida é o que seria melhor, deixar os campos que têm ligação de dependência funcional na mesma tabela ou dividi-los em tabelas filhas ex: Situação 1: Tab_Pessoa CODIGO NOMERAZAO CPFCNPJ IDENTESTADUAL SEXO DATANASC ENDERECO NUMERO COMPLEMENTO BAIRRO CIDADE CEP TELEFONE CELULAR EMAIL DATACAD Situação 2: TAB_PESSOA CODPESSOA NOME CPFCNPJ DATACAD TAB_ENDERECO CODPESSOA TIPOLOGADOURO ENDERECO NUMERO COMPLEMENTO CIDADE UF CEP TAB_TELEFONE CODPESSOA IDTELEFONE TELEFONE TPTELEFONE ( TRABALHO - RESIDENCIAL - FAX - CELULAR ) TAB_EMAIL CODPESSOA IDEMAIL EMAIL TAB_SEXO_DATANASC CODPESSOA SEXO ( M - F ) DATANASC Qual das situações é a mais correta ? Qual a melhor prática ? Na Situação 1 podiamos desegregar os campos telefone e e-mail, e manter os demais campos na tabela pessoa, dessa forma qual dos modelos seria o mais correto. O que vocês recomendam ? Um forte abraço a todos alineri - Em delphi-br@yahoogrupos.com.br mailto:delphi-br% 40yahoogrupos.com.br , Gerhard Roger Nack ginho@ escreveu Então comecemos a normalizar os textos. Não é campu é campo. Frase começar com maiúsculo e também existem palavras acentuadas na língua portuguesa. De: delphi-br@yahoogrupos.com.br mailto:delphi-br% 40yahoogrupos.com.br [mailto:delphi- [EMAIL PROTECTED] mailto:br%40yahoogrupos.com.br ] Em nome de alineri Enviada em: sexta-feira, 14 de dezembro de 2007 16:31 Para: delphi-br@yahoogrupos.com.br mailto:delphi-br% 40yahoogrupos.com.br Assunto: [delphi-br] dependencia funcional normalizacao e numero de campos ola pessoal, sei que nao tem a ver com a ferramenta Delphi, e sobre modelagem mas acredito ser a duvida de muitos tambem que pararam para observar essa questao. tenho uma duvida que carrego ja a um tempo. um exemplo, tenho os dados de um formulario para ser modelado, ao todo sao uns 80 campus e no formulario os campos sao subdivididos em categoria, ex: atendimento, execucao, entrega, quantidades etc... a maioria desses campus seguem o conceito de dependencia funcional so que
[delphi-br] dependencia funcional normalizacao e numero de campos
ola pessoal, sei que nao tem a ver com a ferramenta Delphi, e sobre modelagem mas acredito ser a duvida de muitos tambem que pararam para observar essa questao. tenho uma duvida que carrego ja a um tempo. um exemplo, tenho os dados de um formulario para ser modelado, ao todo sao uns 80 campus e no formulario os campos sao subdivididos em categoria, ex: atendimento, execucao, entrega, quantidades etc... a maioria desses campus seguem o conceito de dependencia funcional so que dessa forma minha tabela fica com um numero de campus muito grande, entao eu geralmente normalizo a tabela criando tabelas filhas contendo esses outros campus, seguindo a ideia de subdivisao feita no formulario, isso esta correto ? e uma boa pratica ? minha duvida vem pq aplicando a 2FN ou a 3FN acabo tendo umas 4 a 5 tabelas filhas, e na hora de fazer uma juncao eu acabo tendo uma lentidao que acredito ser disso pois se trata de muitos registros. Gostaria da opniao dos colegas a respeito disso, se e uma boa pratica ou nao ou oq e mais recomendado. um abarco a todos alineri
Re: RES: [delphi-br] dependência funcional normalização - detalhando
Prezado Sr. Gerhard, Realmente não houve de minha parte a devida atenção as regras gramaticais devido a um hábito antigo de chats. E pela primeira vez vejo alguem manifestar o uso correto da linguagem. Bem mas vamos ao assunto que venho estudando. Estou desenvolvendo um projeto que tem por objetivo ser multi-banco, estou utilizando o Oracle XE e o Firebird 2.0 para testes com tabelas que têm em média 100.000 registros Pesquisando o assunto, tenho observado que depende muito das regras de negócio que cada um adota em seus projetos de modelagem. Minha dúvida é o que seria melhor, deixar os campos que têm ligação de dependência funcional na mesma tabela ou dividi-los em tabelas filhas ex: Situação 1: Tab_Pessoa CODIGO NOMERAZAO CPFCNPJ IDENTESTADUAL SEXO DATANASC ENDERECO NUMERO COMPLEMENTO BAIRRO CIDADE CEP TELEFONE CELULAR EMAIL DATACAD Situação 2: TAB_PESSOA CODPESSOA NOME CPFCNPJ DATACAD TAB_ENDERECO CODPESSOA TIPOLOGADOURO ENDERECO NUMERO COMPLEMENTO CIDADE UF CEP TAB_TELEFONE CODPESSOA IDTELEFONE TELEFONE TPTELEFONE ( TRABALHO - RESIDENCIAL - FAX - CELULAR ) TAB_EMAIL CODPESSOA IDEMAIL EMAIL TAB_SEXO_DATANASC CODPESSOA SEXO ( M - F ) DATANASC Qual das situações é a mais correta ? Qual a melhor prática ? Na Situação 1 podiamos desegregar os campos telefone e e-mail, e manter os demais campos na tabela pessoa, dessa forma qual dos modelos seria o mais correto. O que vocês recomendam ? Um forte abraço a todos alineri - Em delphi-br@yahoogrupos.com.br, Gerhard Roger Nack [EMAIL PROTECTED] escreveu Então comecemos a normalizar os textos. Não é campu é campo. Frase começar com maiúsculo e também existem palavras acentuadas na língua portuguesa. De: delphi-br@yahoogrupos.com.br [mailto:delphi- [EMAIL PROTECTED] Em nome de alineri Enviada em: sexta-feira, 14 de dezembro de 2007 16:31 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] dependencia funcional normalizacao e numero de campos ola pessoal, sei que nao tem a ver com a ferramenta Delphi, e sobre modelagem mas acredito ser a duvida de muitos tambem que pararam para observar essa questao. tenho uma duvida que carrego ja a um tempo. um exemplo, tenho os dados de um formulario para ser modelado, ao todo sao uns 80 campus e no formulario os campos sao subdivididos em categoria, ex: atendimento, execucao, entrega, quantidades etc... a maioria desses campus seguem o conceito de dependencia funcional so que dessa forma minha tabela fica com um numero de campus muito grande, entao eu geralmente normalizo a tabela criando tabelas filhas contendo esses outros campus, seguindo a ideia de subdivisao feita no formulario, isso esta correto ? e uma boa pratica ? minha duvida vem pq aplicando a 2FN ou a 3FN acabo tendo umas 4 a 5 tabelas filhas, e na hora de fazer uma juncao eu acabo tendo uma lentidao que acredito ser disso pois se trata de muitos registros. Gostaria da opniao dos colegas a respeito disso, se e uma boa pratica ou nao ou oq e mais recomendado. um abarco a todos alineri [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] TISS + SIH ( sistema de informacao hospitalar )
Boa Tarde Pessoal, Espero contar com a ajuda de voces. Fui contratado para um projeto em um segmento que nunca trabalhei que sao os sistemas de saudde hospitalar. Primeiro foi desenvolver uma aplicacao para envio de formulario TISS, isso ja esta quase OK. Agora preciso desenvolevr um sistema para uma clinica particular e um hospital particular que tambem atende pelo SUS. Gostaria entao de saber se voces podem me indicar onde encontrar documentacao sobre SIH pois encontrei muito pouco e o que encontrei sao informacoes para quem ja desenvolve na area. Existe algum modelo relacional disponivel para estudo ? os sistemas que encontro para download sao muito precarios, estou realmente preciso de uma luz por onde comecar PS: antes que perguntem sobre o TISS, estou utilizando um componente chamado ComponentTISS que esta disponivel nessa comunidade http://groups.google.com.br/group/comunidade-delphi-tiss exelente grupo de discussao sobre TISS e o componente tambem e muito bom Um forte abraco a todos Alineri
[delphi-br] estudos sobre dbexpress aplicao multicamadas e oracle
Boa tarde pessoa, Onde posso encontrar um material de estudo pode ser apostila, artigo livro sobre esse assunto : dbexpress + multicamadas + oracle a versao do delphi que utilizo e 2006 o oracle 10g express O que tenho encontrado por ai e muito superficial se alguem puder me dar essa dica desde ja agradeco Sempre trabalhei com os componentes IBX ou ADO e Bancos Firebird, SQL Server e Access, e estou precisando estudar bem o dbexpress com oracle para um novo projeto. desde ja agradeco a todos um forte abraco alineri
[delphi-br] histograma e segmentacao de imagem
Bom dia pessoal, Voces sabem onde posso encontrar material sobre como fazer um histograma e segmentacao de imagem utilizando delphi ? E outros documentos que falem sobre manipulacao de imagens no delphi ? um forte abraco a todos Eduardo
[delphi-br] esse procedimento pode estar gerando um Access violation ?
Bom dia pessoal, me deparei com o famoso Access violation em um procedimento simples que e fechar um formulario. nunca tive esse erro em fechar forms, so que esse form e uma unica aplicacao ( nao tenho outros formularios ) e faco chamada a uma dll externa. se abro o form sem executar nenhum procedimento e mando fechar ele fecha normalmente. agora se abro a aplicacao e mando executar um procedimento que faz o seguinte: 1 - carrega um vetor com os dados dos edits 2 - chama as funcoes da dll quando faco isso ja era, se mando fechar da Access violation utilizo para fechar: //evento onclose action:=cafree //ja tentei coloar no evento ondestroy form1:= nil; e tambem FreeAndNil(form1) ou Form1.free ou form1.release todos dao a mesma mensagem Access violation. oq deve ser ? um forte abraco a todos eduardo
[delphi-br] Re: METODO MAQUINA DE ESTADO - EXPLICACOES
Bom dia pessoal, p problema que para acessar as catracas utilizo uma dll do fabricante que no manual ja diz: A dll não é thread-safe ou multi- thread, desse modo apenas uma thread deverá acessar as funções da dll. os terminais que utilizo sao IPs ON-LINE e fico fazendo pooling, o problema acho que esta justamente ai, porque tenho que fazer um pooling para cada terminal oq gera os problemas que mencionei, pesquisando na net as informacoes que obtive e que para esse tipo de equipamento o recomendado e esse metodo de programacao em ESTADO. Outra coisa e que infelizmente tenho que usar o access por unica e exclusiva imposicao. quando voces falam em trabalhar coim thread, e criar um executavel para cada terminal ? a aplicao da forma como mencionei esta funcionando, so que tem horas que nao consegue conectar com todos os equipamentos, tenho esses mesmo problemas de conexao com banco de dados quando ocorrem conexoes simultaneas...etc. bem pessoal e isso, oq voces recomendam ou sugerem ? se alguem souber onde tem um bom material de estudo sobre o assunto por favor post o link. um forte abarco a todos eduardo --- Em delphi-br@yahoogrupos.com.br, sandrobit2000 [EMAIL PROTECTED] escreveu Bom dia!! Kra seguinte os seus terminais sao SERIAIS ou IPs, se for controlar os dois tipos, vc tera q ter codigo diferentes, a naou ser que consiga fazer uma classe que trate, como nao tive tmp pra isso heheheh o conselho eh o mesmo da galera o caminho eh thread, outra pgt seus terminais sao On-line ou Realtime? Explico: On-Line vc tem q ficar perguntando ao terminal se tem algum registro pra validar dai fica dando pooling nele, o realtime te envia a requisicao de validacao deixando seu sistema em standby. No meu caso meu sistema usa threads cada terminal eh uma thread, um conselho qdo for fazer se usar o banco IB/FB crie uma conexao para cada terminal, assim vc poder fazer manutencao no banco sem prejudicar a comunicacao, explico, se vc tem uma conexao so com o banco quando uma thread faz um select e ao mesmo tmp outro terminal faz uma requisicao tambem dai uma thread vai esperar pela outra pq o banco nao esta como multi sessao, lembre-se disso, eu to com este problema mas a preguiça e o tamanho da mudanca nao me dar coragem de modificar, dai apesar de ter threads sepradas se tiver duas validacao para efetuar uma espera pela outra! bom espero ter ajudado qualquer coisa to por aqui! abracao Bit --- Em delphi-br@yahoogrupos.com.br, alineri alineri@ escreveu Boa noite pessoal Estou desenvolvendo uma aplicacao que utiliza o metodo de MAQUINA DE ESTADO que e uma rotina que fica em loop testando uma variável que chamamos de Estado. Dependendo do estado atual, executamos alguns procedimentos e em seguida alteramos o estado que será verificado pela máquina de estados novamente no próximo passo do loop. Utilizo esse conceito para trabalhar com terminais onde o programa fica rodando em loop aguardo informacoes do terminal. queria saber dos amigos se conhecem esse conceito de programacao que nao conhecia ate entao, se ja utilizaram em terminais ou em qualquer outra aplicacao. mas ai vai a minha questao. Essa aplicao a para atender 11 terminais de acesso ( catracas ). quardo as informacoes desses terminais em um vetor e um dos campos desse vetor chamo de estado que sera a variavel que ira armazenar o estado atual de cada terminais, se foi acessado ou nao por exemplo. um pseudocodigo ficaria assim mais ou mesnos //Váriável para armazenar o estado atual de cada terminals Inteiro VetorTerminal[32]; //Variável que diz qual é o terminal que estamos tratando Inteiro TerminalAtual = 1 while(TRUE){ //Verifica qual é o estado do terminal atual Case VetorTerminal[TerminalAtual] 1: // Procedimentos Primeiro passo inner //Seta o Terminal atual para o próximo estado VetorTerminal[TerminalAtual] = 2; 2: //Executa o estado 2 para o Terminal atual //Seta o Terminal atual para o próximo estado VetorTerminal[TerminalAtual] = 3; . . . // Ate quantos passos achar necessario //Pula para o próximo Terminal TerminalAtual = TerminalAtual + 1; If(TerminalAtual TOTALDETERMINAIS){ TerminalAtual = 1; } Basicamente se eu nao estiver errado essa e a ideia de maquina de estado, e foi o unico metodo que concegui para trabalhar com terminais, e ai esta o problema. Pelo pseudocodigoa cada passo do CASE a variavel que controla a posicao do vetorterminal e incrementada, fazendo um loop assim em todos os terminais. Nesses passos que estao dentro desse loop sao testados as conexoes com cada terminal, verifica se as informcoes foram passadas por esses terminais ( informacoes vindas de cartoes, teclado, digitais etc ) O problems que ja observei em pratica foi: 1 - Quando um terminal sai do passo 1, para entrar
[delphi-br] Re: METODO MAQUINA DE ESTADO - EXPLICACOES - ENTENDI
Blz Mario, Entendi a ideia, so mas uma pergunta entao para voce e o pessoal, e que trabalho mais com PHP do que com Delphi, como eu posso trabalhar com Thread no Delphi ? Voces conhecem algum site ou documenmtacao que fale bem do assunto ( Thread) com algum exemplo se possivel ? Mas trabalhando com Thread tenho que mudar minha logica de utilizacao de maquina de estado ou posso continuar com ela ? e dependendo do procedimento exeecutado eu chamo um Thread para executa-la ? um forte abraco a todos Eduardo --- Em delphi-br@yahoogrupos.com.br, José Mário Silva Guedes [EMAIL PROTECTED] escreveu Insisto no uso de Thread, pois seu problema é, de fato, parecido com o meu. O pulo do gato (acho que estou ficando velho - já estou começando a usar essas expressões), o pulo do gato é você criar uma Thread para se comunicar com as catracas, por conta da DLL. Essa Thread se comunica com outras Threads, que tratam as catracas individualmente. Ao tratar o que tem que ser tratado, você devolve o que que tem fazer para a Thread que se comunica com a catraca. Esquema: 1) ThreadEventos (Se comunica com as catracas) 2) ThreadCatraca1 (Se comunica com o Access) 3) ThreadCatarca2 (Se comunica com o Access) [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] METODO MAQUINA DE ESTADO - DUVIDAS - ALGUEM CONHECE ?
Boa noite pessoal Estou desenvolvendo uma aplicacao que utiliza o metodo de MAQUINA DE ESTADO que e uma rotina que fica em loop testando uma variável que chamamos de Estado. Dependendo do estado atual, executamos alguns procedimentos e em seguida alteramos o estado que será verificado pela máquina de estados novamente no próximo passo do loop. Utilizo esse conceito para trabalhar com terminais onde o programa fica rodando em loop aguardo informacoes do terminal. queria saber dos amigos se conhecem esse conceito de programacao que nao conhecia ate entao, se ja utilizaram em terminais ou em qualquer outra aplicacao. mas ai vai a minha questao. Essa aplicao a para atender 11 terminais de acesso ( catracas ). quardo as informacoes desses terminais em um vetor e um dos campos desse vetor chamo de estado que sera a variavel que ira armazenar o estado atual de cada terminais, se foi acessado ou nao por exemplo. um pseudocodigo ficaria assim mais ou mesnos //Váriável para armazenar o estado atual de cada terminals Inteiro VetorTerminal[32]; //Variável que diz qual é o terminal que estamos tratando Inteiro TerminalAtual = 1 while(TRUE){ //Verifica qual é o estado do terminal atual Case VetorTerminal[TerminalAtual] 1: // Procedimentos Primeiro passo inner //Seta o Terminal atual para o próximo estado VetorTerminal[TerminalAtual] = 2; 2: //Executa o estado 2 para o Terminal atual //Seta o Terminal atual para o próximo estado VetorTerminal[TerminalAtual] = 3; . . . // Ate quantos passos achar necessario //Pula para o próximo Terminal TerminalAtual = TerminalAtual + 1; If(TerminalAtual TOTALDETERMINAIS){ TerminalAtual = 1; } Basicamente se eu nao estiver errado essa e a ideia de maquina de estado, e foi o unico metodo que concegui para trabalhar com terminais, e ai esta o problema. Pelo pseudocodigoa cada passo do CASE a variavel que controla a posicao do vetorterminal e incrementada, fazendo um loop assim em todos os terminais. Nesses passos que estao dentro desse loop sao testados as conexoes com cada terminal, verifica se as informcoes foram passadas por esses terminais ( informacoes vindas de cartoes, teclado, digitais etc ) O problems que ja observei em pratica foi: 1 - Quando um terminal sai do passo 1, para entrar no passo dois tem que esperar o loop percorrer todos os outros terminais, oq as vezes gera um pouco de lentidao. 2 - Problemas no momento da validacao de dados, se dois ou mais usuarios fizerem uma validacao ( passaram um cartao ) ao mesmo tempo as variaveis que utilizo para armazenar por exemplo o codigo do cartao que foi passado ou informacoes do teclado perdem as referencias. 3 - um meio de tratar dentro desse loop terminais a parte, por exemplo, um terminais perdeu a conexao, ter um meio dentro dese loop de ficar testando a conexao com esse termianal isoladamente, sem que o teste de conexao do mesmo tenha o mesmo problema que relatei na questao 1. Bem pessoal queria ver se alguem pode me dar uma ideia para melhorar esse pseudo codigo, se alguem conehce esse metodo de maquina de estado e possa dar uma ideia de como melhorar o desempenho, e ainda se alguem trabalha com terminais utilizando esse conceito para trocarmos experiencia. Vou ficando por aqui, o texto ja esta grande. Um forte abraco a todos eduardo
[delphi-br] inverter bloco hexadecimal
Bom Dia pessoal, Preciso inverter um bloco Hexadecimal ( no caso inverter um bloco de caracteres ) como no exemplo abaixo: BLOCO INICIAL4A7C7DB5 BLOCO INVERTIDO B57D7C4A So que preciso inverter a posicao dos blocos e nao colocar de tras para frente, so que preciso fazer isso independete do numero de blocos serem pares ou impares exemplo: BLOCO INICIAL C4D5A9B BLOCO INVERTIDO 9B5A4DC E assim por diante independete do numero de caracteres. Alguem pode me ajudar Um forte abraco a todos Eduardo
[delphi-br] Re: inverter bloco hexadecimal - Funcionou e Explicacoes
Mais uma vez obrigado ai pessoal pela ajuda, todas as funcoes deram certo. estava precisando dessa funcao por que tenho dois modelos de leitores de cartao de proximidade MIFARE 1K diferentes, um do fabricante ACG e outro do fabricante ACURA. O retorno que ambos leitores dao e em haxadecimal, so a posicao dos blocos hexadecimais de um e invertido se comparado ao outro. No caso a ACG responponde na posicao correta se comparada a outros leitores a o leitor da ACURA responde com a posicao dos blocos invertida. mas uma vez obrigado e um forte abraco a todos eduardo --- Em delphi-br@yahoogrupos.com.br, Joao Morais [EMAIL PROTECTED] escreveu alineri wrote: Bom Dia pessoal, Preciso inverter um bloco Hexadecimal ( no caso inverter um bloco de caracteres ) como no exemplo abaixo: BLOCO INICIAL4A7C7DB5 BLOCO INVERTIDO B57D7C4A So que preciso inverter a posicao dos blocos e nao colocar de tras para frente, so que preciso fazer isso independete do numero de blocos serem pares ou impares exemplo: BLOCO INICIAL C4D5A9B BLOCO INVERTIDO 9B5A4DC Você quis dizer 9B5A4D0C, correto? E assim por diante independete do numero de caracteres. function Revert(const AHex: string): string; var VHex: string; VLen, I: Integer; begin if Odd(Length(AHex)) then VHex := '0' + AHex else VHex := AHex; VLen := Length(VHex); SetLength(Result, VLen); for I := 0 to Pred(VLen div 2) do Move(VHex[2 * I + 1], Result[VLen - 2 * I - 1], 2); end; Testa aí e diz se funciona. Curiosidade: em que circunstância você precisa disto? Dump de memória? Faculdade? -- Joao Morais
[delphi-br] funcao hexadecimal para inteiro para acima de 7 digitos
Boa tarde pessoal, Estou com dificuldades em converter numeros hexadecimais grandes em decimais. todas as funcoes que peguei na net e que fiz quando tem mais de 7 digitos nao funciona, verifico se esta certo pela calculadora do windows. alguem pode me ajudar estou precisando muito dessa funcao exemplo de uma funcao que peguei aqui no grupo e que nao funcionou com o seguinte numero hexadecimal C5E57F15 o resultado que a funcao retorna e: -974815467 quando a conversao correta e: 3320151829 Um forte abraco a todos Eduardo function TForm1.HexToInt(const HexStr: string): longint; var iNdx: integer; cTmp: Char; begin Result := 0; for iNdx := 1 to Length(HexStr) do begin cTmp := HexStr[iNdx]; case cTmp of '0'..'9': Result := 16 * Result + (Ord(cTmp) - $30); 'A'..'F': Result := 16 * Result + (Ord(cTmp) - $37); 'a'..'f': Result := 16 * Result + (Ord(cTmp) - $57); else raise EConvertError.Create('Illegal character in hex string'); end; end; end;
[delphi-br] Re: funcao hexadecimal para inteiro para acima de 7 digitos FUNCIONOU
Obrigado pessoal utilizei a funcao strtoint64 como descrito abaixo e pronto, funcionou que e uma beleza. E o melhor de tudo com uma linha so. Mais uma vez obrigado e um forte abraco a todos Eduardo --- Em delphi-br@yahoogrupos.com.br, Desenvolvimento \(Anderson\) [EMAIL PROTECTED] escreveu use a função strtoint64... assim: caption := inttostr(strtoint64('$C5E57F15')) - Original Message - From: alineri To: delphi-br@yahoogrupos.com.br Sent: Monday, August 27, 2007 5:35 PM Subject: [delphi-br] funcao hexadecimal para inteiro para acima de 7 digitos Boa tarde pessoal, Estou com dificuldades em converter numeros hexadecimais grandes em decimais. todas as funcoes que peguei na net e que fiz quando tem mais de 7 digitos nao funciona, verifico se esta certo pela calculadora do windows. alguem pode me ajudar estou precisando muito dessa funcao exemplo de uma funcao que peguei aqui no grupo e que nao funcionou com o seguinte numero hexadecimal C5E57F15 o resultado que a funcao retorna e: -974815467 quando a conversao correta e: 3320151829 Um forte abraco a todos Eduardo function TForm1.HexToInt(const HexStr: string): longint; var iNdx: integer; cTmp: Char; begin Result := 0; for iNdx := 1 to Length(HexStr) do begin cTmp := HexStr[iNdx]; case cTmp of '0'..'9': Result := 16 * Result + (Ord(cTmp) - $30); 'A'..'F': Result := 16 * Result + (Ord(cTmp) - $37); 'a'..'f': Result := 16 * Result + (Ord(cTmp) - $57); else raise EConvertError.Create('Illegal character in hex string'); end; end; end; __ Informação do NOD32 IMON 2486 (20070827) __ Esta mensagem foi verificada pelo NOD32 sistema antivírus http://www.eset.com.br [As partes desta mensagem que não continham texto foram removidas]