我将我的应用程序从BDE迁移到FIREDac 我用来更新数据库的例程不起作用:
SELECT
CODIGO , NOME , ENDERECO , ENDERECO1 , COMPLEMENTO , COMPLEMENTO1 ,
PONTOREFERENCIA , BAIRRO , CIDADE , UF , PAIS , CEP , CX_POSTAL ,
FONE , FAX , EMAIL , CONTATO , CGC , INSCRICAO , DATA_FICHA , CI ,
CPF , TIT_ELEITOR , DATA_NASC , SEXO , EST_CIVIL , NATURAL , FILIACAO ,
PAI , MAE , CONJUGE , NASC_CONJ , ALUGUEL , VAL_ALUGUEL , TEMP_RESID ,
EMPRESA , FONE_EMPR , ADMISSAO , CEP_EMPR , CIDA_EMPR , UF_EMPR ,
FUNCAO , TEMP_SERV , REF_COML , REF_BANC , CONS_SPC , OBS , CREDITO ,
ATRASO , SALARIO , ENDEMPRESA , FOTO , NOMEFANTASIA , CREDITOS ,
ENDCOBRANCA , RESTRICAO , BAIRRO_EMPR , INATIVO , CONTATO1 , CONTATO2 ,
CONTATO3 , TAXABOLETO , RESTRICAOANTIGA , NUMERO , IDCIDADE ,
IDPAISES , CUF
FROM
Clientes
它给我一个内部错误。
有些亮点??!
注意:在Time designer中,将直接命令放在FdQuery中并且它正常工作!bs:在设计器Time中,在FdQuery中输入直接命令和
注2:BD在Access !!!
当我试图解释时,我会选择数据并插入无目标表! abiaxo例程适用于具有少量字段的表。但是在上面有错误的情况下!
选择仅用于演示发生错误的表格! 代码:
procedure ConverteTabela(Query: TFDQuery; Alias, Tabela, Campo: string; Tipo: Integer; Senha: string);
var
Tabela1: TFDTable;
I: Integer;
STR:String;
begin
// Tipo = 0 -> Todos os registros da tabela antiga
// Tipo = 1 -> Todos os registros da tabela antiga que não estão na tabela de atualização
// Tipo = 2 -> Todos os registros da tabela antiga que possuem Campo <> 0
// Tipo = 3 -> Apaga os registro da tabela de atualização e coloca os da empresa
Tabela1 := TFDTable.Create(Application);
Tabela1.ConnectionName := Query.ConnectionName;
Tabela1.TableName := Tabela;
Str:='';
try
Tabela1.open;
for I := 0 to tabela1.Fields.Count-1 do
begin
if not (i=tabela1.Fields.Count-1) then
begin
Str:= Str + UpperCase(tabela1.Fields[i].FieldName)+ ' , '
end
else
Str:= Str + tabela1.Fields[i].FieldName;
end;
Tabela1.Close;
Tabela1.free;
except
exit;
end;
Mensagem('Convertendo : ' + Tabela + ' ...');
if Tipo = 3 then
begin
Query.SQL.Clear;
Query.SQL.Add('DELETE FROM "'+ Alias + '".'+Tabela);
Query.ExecSQL;
Tipo := 0;
end;
//test Select -
Query.SQL.Clear;
Query.SQL.Text := 'Select ' + str + 'from '+Tabela;
Query.open;
Query.SQL.Clear;
Query.SQL.Text:='INSERT INTO "'+ Alias + '".'+tabela+' ('+str+')'+ ' SELECT '+str+' FROM ' + Tabela;
if (Tipo = 1) then
begin
Query.SQL.Add('WHERE ' + Campo + ' NOT IN');
Query.SQL.Add('(SELECT ' + Campo + ' FROM "'+ Alias + '".'+tabela+')');
end
else if (Tipo = 2) then
begin
Query.SQL.Add('WHERE ' + Campo + ' <> 0');
Query.SQL.Add('AND ' + Campo + ' <> -1');
end;
// Query.Prepare;
try
Query.ExecSQL;
except
showmessage('Erro ao executar comando : ' + Query.Sql.CommaText);
exit;
end;
end;