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 SQLEstou 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.