Erro de acentuação no Insert Mysql (MariaDB)
Prezado(a)s, Bom dia.
Estou com a seguinte situação:
Faço uma busca em um banco de dados access.
Pego o resultado deste select e gravo em um banco de dados mysql remoto.
Abaixo, vou colocar a rotina que faço.
O problema esta na acentuação do Parametro ValorCampo.
Se eu descomento o Showmessage pra debugar, ele printa certinho, como por exemplo: Passou no While. O código é 70 E o Campo é o RIO DO AÇO.
Já no insert, ele insere o id como 70 e o campo como RIO DO AÇO
Meu conhecimento em Delphi é mínimo, mas já tenteei de várias formas isolar o problema. Entrei diretamente no Mysql e inseri manualmente outro registro como RIO DO AÇO e gravou normal, ou seja, não é o collation ou charset do Mysql.
Dando o Showmessage antes do insert também funciona, então acredito que seja algo relacionado ao ParamByName.
Como posso resolver isso?
Alguém pode me ajudar?
Estou com a seguinte situação:
Faço uma busca em um banco de dados access.
Pego o resultado deste select e gravo em um banco de dados mysql remoto.
Abaixo, vou colocar a rotina que faço.
while not ADOQuery1.Eof do begin //Showmessage(''Passou no While. O Código é: '' + FieldByName(''Código'').AsString + sLineBreak + ''E o Campo é o '' + FieldByName(''campo'').AsString); SQLCampo.Active := False; // Fecho a TSQLQuery SQLCampo.SQL.Clear; SQLCampo.SQL.Add(''INSERT INTO campos (id, campo) VALUES ( :ValorID, :ValorCampo )''); SQLCampo.ParamByName(''ValorID'').AsInteger := FieldByName(''Código'').AsInteger; SQLCampo.ParamByName(''ValorCampo '').AsString := FieldByName(''campo'').AsString; SQLCampo.ExecSQL; AdoQuery1.Next; end;
O problema esta na acentuação do Parametro ValorCampo.
Se eu descomento o Showmessage pra debugar, ele printa certinho, como por exemplo: Passou no While. O código é 70 E o Campo é o RIO DO AÇO.
Já no insert, ele insere o id como 70 e o campo como RIO DO AÇO
Meu conhecimento em Delphi é mínimo, mas já tenteei de várias formas isolar o problema. Entrei diretamente no Mysql e inseri manualmente outro registro como RIO DO AÇO e gravou normal, ou seja, não é o collation ou charset do Mysql.
Dando o Showmessage antes do insert também funciona, então acredito que seja algo relacionado ao ParamByName.
Como posso resolver isso?
Alguém pode me ajudar?
Oswaldo
Curtidas 0
Respostas
Paulo
30/04/2022
Pode não ser o melhor jeito. Mas funciona.
while not ADOQuery1.Eof do begin with SQLCampo do begin Active := False; SQL.Clear; SQL.Add('INSERT INTO campos (id, campo) VALUES (' + id + ', ' + QuotedStr(ValorCampo) + ')'); ExecSQL; end; ADOQuery1.Next; end;
GOSTEI 0