Search the web
Sign In
New User? Sign Up
st-br · Smalltalk Brasil
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Real people. Real stories. See how Yahoo! Groups impacts members worldwide.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Problemas para gerar statement SQL   Message List  
Reply | Forward Message #241 of 256 |
RE: [st-br] Problemas para gerar statement SQL

Olá Danilo,
certamente o default de um string *não é* ficar "comido" como para ter que pedi-lo enteiro. Ele é o que é.
Pode ser que o framework que interfaceia com o teu rdbms esteja te fazendo passar um mal momento. Outra coisa pode ser o driver de odbc.
Eu tentaría com opçoes ou com alguma ferramenta de diagnostico que permita estar 100% certo de que o problema e dentro do st ou fora (drives, rdbms encoding issues, etc).
Se o string que teu codigo forma executa bem via um cliente externo, nao vejo porque questiona lo.
hope this helps,
Sebastian
 


De: st-br@yahoogroups.com [mailto:st-br@yahoogroups.com] En nombre de danilo.marcondes
Enviado el: Tuesday, January 13, 2009 11:21
Para: st-br@yahoogroups.com
Asunto: [st-br] Problemas para gerar statement SQL

Estou programando uma classe no Smalltalk (VisualAge 6.0), que lê um
registro de uma tabela em um banco de dados e monta um statement de
UPDATE, baseado nos nomes dos campos e nas informações que cada um
deles contém.

O statement UPDATE é gerado corretamente, e fica com um tamanho de
pouco menos de 600 caracteres.

Não sei por qual razão, quando o statement é passado para ser
executado, o smalltalk "come" o final dele. Dessa forma, quando tento
executar o UPDATE, o programa me retorna erro de sintaxe.

Esse é o meu método:

====================================================================
alteraLinha: wrow chave: wchv tabela: wtab

| wconweb wtabweb wstm wcr waux wlst |

wconweb := AbtDbmSystem activeDatabaseConnectionWithAlias: 'WEBDB'.

wtabweb := wconweb openTableNamed: #Tabela ifError: [ :werr |
self rc: (self trataErro: werr).
^false
].

wlst := wtabweb columnNamesIfError: [ :werr |
self rc: (self trataErro: werr).
^false
].

wcr := ((String with: (Character value: 13)), (String with:
(Character value: 10))).
wstm := 'UPDATE ', wtab, ' SET ', wcr.

wlst do:[ :wnom |

wstm := wstm, wnom, ' = '.
wstm := wstm, (self asSql: (wrow at: (wnom
asSymbol))).
wstm := wstm, ', ', wcr.

].

wstm := wstm copyFrom: 1 to: (wstm size - 4).
wstm := wstm, ' WHERE ', wchv, ' = ', (self asSql: (wrow at: (wchv
asSymbol))).

wconweb executeSQLStatement: wstm ifError: [ :werr |
self rc: (self trataErro: werr).
^false
].

====================================================================

Obs.: O método "self asSql:" apenas transforma a informação que
estiver em determinado campo no registro, para incluí-la na
formatação correta no statement de update.

Não sei se existe algum atributo na classe String que me permita
enviar todos os caracteres.
Achei um tanto quanto incomum esse evento, mas se alguém souber de
alguma coisa, agradeço muito!

Obrigado.



Tue Jan 13, 2009 3:04 pm

ssastre@...
Send Email Send Email

Forward
Message #241 of 256 |
Expand Messages Author Sort by Date

Estou programando uma classe no Smalltalk (VisualAge 6.0), que lê um registro de uma tabela em um banco de dados e monta um statement de UPDATE, baseado nos...
danilo.marcondes
danilo.marco...
Offline Send Email
Jan 13, 2009
1:20 pm

Olá Danilo, certamente o default de um string *não é* ficar "comido" como para ter que pedi-lo enteiro. Ele é o que é. Pode ser que o framework que...
Sebastian Sastre
ssastre@...
Send Email
Jan 13, 2009
3:25 pm

Para ver se o statement estava realmente correto, eu mandei que o Smalltalk gerasse para mim um arquivo texto com ele. Ao abrir o arquivo, vi que o statement...
danilo.marcondes
danilo.marco...
Offline Send Email
Jan 13, 2009
5:38 pm

Danilo, [...] ... [...] ... [...] Aqui você está "comendo o final do texto" de propósito. E logo na linha seguinte passa a ser o meio do texto de modo que...
Jecel Assumpcao Jr
jeceljr
Offline Send Email
Jan 13, 2009
6:26 pm

Olá Jecel! Essa parte, (wstm := wstm copyFrom: 1 to: (wstm size - 4)), onde ele tira os caracteres é proposital, para retirar um "AND" final do statement. ...
danilo.marcondes
danilo.marco...
Offline Send Email
Jan 20, 2009
12:11 pm

Brigado por compartilhar Danilo. Foi de fato o case falado em: "...Pode ser que o framework que interfaceia com o teu rdbms esteja te fazendo passar um mal...
Sebastian Sastre
ssastre@...
Send Email
Jan 20, 2009
5:29 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help