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