|
Postada em 12/01/2006 23:17 hs
Caros colegas programadores , Estou tendo problema com instrucao sql para o Firebird e Interbase : Para carregar um MSHFlexgrid sem percorrer toda a tabela com dados no ACCESS podemos formatar ja na instrucao sql : sql = "select (produtos.codigo) as codigo , Format(produtos.preco,'###0.00') as preco From Produtos" ... mais ou menos isso ... preenchendo a grade ... Set Grid.Recordset = tblAux o problema e que FIREBIRD INTERBASE nao esta aceitando a instrucao dessa forma , alguem sabe uma forma de formatacao que o banco aceite ou terei que percorrer a tabela com um laco mesmo ? Uso VB6 + SP6 - acesso ADO - simultaneamente o sistema podera trabalhar com ACCESS OU INTERBASE entao tera que ser instrucoes que funcione com os dois bancos ... se alguem tiver alguma informacao agradeco ...
|
|
|
|
|
Postada em 13/01/2006 06:19 hs
Mas o banco esta retornando algum erro de SQL ou simplesmente nao está preenchendo???
Elieser Carlos Topassi Analista de Sistemas - Desenvolvedor VB/ASP/.Net
e-mail/msn: elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil _____________________________________________________
"O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)
|
|
|
ivanhoe
|
BARRA BONITA SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 14/01/2006 00:54 hs
Caro Elieser , Em primeiro lugar obrigado pela atenção ... O erro esta acontecendo quando executa a consulta ao banco , Ex: SQL = "" SQL = "Select CodigoProduto,Descricao,Format (ValorVendaVista,'###0.00') as Vista,Format(ValorVendaPrazo,'###0.00') as Prazo , CodBar From Estoque Order By Descricao" ' tblEstoque.CursorLocation = adUseClient If tblEstoque.State = adStateOpen Then tblEstoque.Close
'NESTA LINHA PARA A EXECUCAO E MOSTRA O ERRO tblEstoque.Open SQL, adoBanco, adOpenForwardOnly, adLockReadOnly MENSAGEM DE ERRO : Dynamic SQL Error SQL error code = -804 Function Unknown FORMAT Inclusive ja li muita coisa do firebird e interbase e por enquanto nao achei nada , estou carregando o grid pelo laco e formatando antes de inserir na grade , mas fica um pouco mais demorado e muitas linhas de codigo a mais tambem ... se vc tiver alguma sugestao ou se tem uma sintaxe diferente para interbase ou ele nao aceita mesmo esta pre formatacao dos dados ... com ACCESS funciona perfeito .. ate mais Ederval
|
|
|
|
Postada em 15/01/2006 10:27 hs
Amigo Nunca trabalhei com Firebird, mas como é baseado no codigo ffonte do Interbase, vou dar minha opniao sobre isso baseado no q acontece no IB: NAO EXISTE FUNCAO FORMAT em nenhum SGBD (pelo menos nao existe no Oracle, no SQL Server, no IB e no mySql, q sao os q eu trabalho) Esse select deve ser do Access e vc ta tentando reutilizar... consulte a documentação do seu servidor e verifica qual a funcao ou sintaxe q pode ser usada no lugar do Format... Sinto, mas eu nao conheço a sintaxe do IB a fundo pra dar uma soluçao de cabeça... eu tenho o habito de consultar sempre a documentaçao, assim nao preciso decorar muitos comandos... Espero ter ajudado... Flw!
Elieser Carlos Topassi Analista de Sistemas - Desenvolvedor VB/ASP/.Net
e-mail/msn: elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil _____________________________________________________
"O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)
|
|
|
|
Postada em 15/01/2006 22:35 hs
Caro Elieser , Sei que não existe função FORMAT nos SGBDs mais robustos e confiaveis , uso tambem o SQL SERVER com ODBC e ADO , o Firebird e similar ao Interbase mas quando se quer trabalhar com um codigo mais enxuto para produzir sistemas mais rapidos procuramos otimiza-lo ao máximo os comando , com SQL SERVER esta opcao de format na propria instrucao SQL tambem nao e possivel , e necessario percorrer a tabela e formatar o necessario na hora da inserção na grade(flexgrid) ou trabalha-se com controles vinculados e formata-se a coluna no objeto (o que não e desejavel em termos de otimização entre outros fatores ...) ; com o ACCESS funciona , dentre outros recursos bons deste banco ; no ITERBASE ou FIREBIRD existe uma funcao chamada "CAST" que converte valores para outros tipos , no caso de moeda ou numeros com decimal para nao mostrar "5.2" ou "5" usamos para mudar para "5.20" ou "5.00" (questao de estetica por causa de mostrar o ponto em vez da virgula) no SQL SERVER tambem e assim ... Na verdade este sistema que estou alterando tera a possibilidade de usar ACCESS ou Firebird e estou tentando mudar o mínimo possível as instruções SQL , onde nao há como , faço um desvio .... If SGBD = "ACCESS" then instrucao para access ... elseif SGDB = "FIREBIRD" then instrucao para firebird... endif Mas enfim agradeço sua atenção e sua opinião .. Até mais ,
|
|
|
|