pimpocvl007 Posted September 10, 2011 Report Share Posted September 10, 2011 (edited) Boa noite,Utilizei o código abaixo para EXPORTAR os dados da minha tabela, funcionou perfeitamente. O problema esta no código de importação que da este erro: [E-R-R-O]Project 1Dynamic SQL ErrorSQL error code = -303conversion error from string "1"[E-X-P-O-R-T-A-R]var Delimitador: TIBOutputDelimitedFile;begin IBSQL1.SQL.Text := 'select CUST_NO, CUSTOMER, CITY from CUSTOMER'; Delimitador := TIBOutputDelimitedFile.Create; try Delimitador.Filename := 'C:\export_delim.exp'; IBSQL1.BatchOutput(Delimitador); finally Delimitador.Free; end; ShowMessage('Exportação realizada com sucesso');end;[i-M-P-O-R-T-A-R]var Delimitador: TIBInputDelimitedFile;begin IBSQL1.SQL.Text := 'insert into CUSTOMER values (:CUST_NO, :CUSTOMER, :CITY)'; Delimitador := TIBInputDelimitedFile.Create; try Delimitador.Filename := Edit1.Text; IBSQL1.BatchInput(Delimitador); finally Delimitador.Free; end; ShowMessage('Importação realizada com sucesso');end;obs.: http://www.devmedia.com.br/post-2040-Expor...do-fb---ib.htmlComo resolver? Edited December 5, 2011 by pimpocvl007 Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted September 10, 2011 Report Share Posted September 10, 2011 Dynamic SQL ErrorSQL error code = -303conversion error from string "1"erro de conversão para string "1"OBS: supondo que o seu campo CUST_NO seja do tipo inteiro, voce deverá fazer a conversão da string "1" que é um caracter para um valor inteiro.abraço Quote Link to comment Share on other sites More sharing options...
0 pimpocvl007 Posted September 11, 2011 Author Report Share Posted September 11, 2011 Jhonas, boa noite.Como que converte? Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted September 12, 2011 Report Share Posted September 12, 2011 Já que voce esta seguindo o exemplo do link:Aqui vale uma dica muito importante: para que a importação ocorra perfeitamente, os campos de destino têm que ter o mesmo nome, tipo de dados e ordem na tabela, caso contrário ocorrerá erros ao inserir os dados. Dynamic SQL ErrorSQL error code = -303conversion error from string "1"reveja a definição de tipo de dados na sua tabela, e não precisará fazer nenhuma conversãoexemplo de uma conversão de tipovar num : string; num1 : integer num := '1'; num1 := num; // aqui ocorrerá erro de conversão num1 := strtoint(num); // aqui está correta a conversão de tipoabraço Quote Link to comment Share on other sites More sharing options...
0 pimpocvl007 Posted September 12, 2011 Author Report Share Posted September 12, 2011 var num : string; num1 : integer num := '1'; num1 := num; // aqui ocorrerá erro de conversão num1 := strtoint(num); // aqui está correta a conversão de tipo...então Jhonas, para testar eu criei uma tabela simples que recebera a importação, (tabela = teste, sendo os campos: "cd_cliente = integer" e "nm_cliente = string(60)"), os dados que exportei de outra tabela seguem este mesmo raciocínio, inclusive o nome e tipo, mesmo assim deu erro. Este exemplo de conversão que você deu já e familiar para mim, mas no caso dentro de um SQL não, você quer dizer que eu terei que utilizar variáveis dentro do SQL para representar os campos? isso?obs.: naquele primeiro link que postei tem um "programinha" de exemplo para baixar, testei com ele e também da erro.ObrigadoOlimpio Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted September 12, 2011 Report Share Posted September 12, 2011 exemplo na instrução sql:INSERT INTO Customer (CustNo, CustFirstName, CustLastName, CustStreet, CustCity, CustState, CustZip, CustBal) VALUES ("9999999", 'John', 'Avitabile', '432 Western', 'Albany', 'NY', '80217-0211', 500) OBS: foi utilizado aspas duplas no valor, o que causara erro INSERT INTO Customer (CustNo, CustFirstName, CustLastName, CustStreet, CustCity, CustState, CustZip, CustBal) VALUES ('9999999', 'John', 'Avitabile', '432 Western', 'Albany', 'NY', '80217-0211') OBS: a maneira correta é usar aspas simples outra maneira seria fazer a conversão como no exemplo do post anterior, se voce estiver usando variaveis com passagem de parametros. INSERT INTO Customer (CustNo, CustFirstName, CustLastName, CustStreet, CustCity, CustState, CustZip) VALUES (:Num, :Nome, :Sobre_nome, :Rua, :Cidade, :Estado, :CEP)Então antes de processar a instrução voce faz a conversão do tipooutro exemplo se uso:http://files.edin.dk/php/win32/dev/php_bui...les/o8idemo.sqlabraço Quote Link to comment Share on other sites More sharing options...
0 pimpocvl007 Posted November 29, 2011 Author Report Share Posted November 29, 2011 (edited) ...sabe, ainda não consegui resolver este problema. Fiquei impressionado quando descobri este componente IBSQL1 que exportou todos os dados sem eu precisar ficar fazendo muitas configurações, ai no exemplo também constava a importação, essa sim, deu dor de cabeça, eu imaginava que seria algo como fez com a exportação ou seja, era só entrar com um sql simples executar ali e pronto, ele (IBSQL1) importaria da mesma forma magica os dados para a tabela. Pelo que estou percebendo eu tenho que desenvolver um processo que lê linha por linha do arquivo e importa na tabela, isso?[este código não da erro mas também não importa nada]procedure TfrmPESPR001.btImportarClick(Sender: TObject);var Input: TIBInputRawFile;begin IBSQL1.SQL.Text := 'insert into TESTE values (:CD_PESSOA, :NM_PESSOA)'; Input := TIBInputRawFile.Create; try Input.Filename := ExtractFilePath(Application.ExeName)+'\backups\CadastroPerfilPessoa.exp'; IBSQL1.BatchInput(Input); finally Input.Free; end; ShowMessage('Importação realizada com sucesso');end;Att.Olimpio Edited November 29, 2011 by pimpocvl007 Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted November 29, 2011 Report Share Posted November 29, 2011 exemplo:unit UIBSQL; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, IBDatabase, IBCustomDataSet, IBQuery, IBSQL, IBUpdateSQL, DBClient, DBLocal, DBLocalI, ExtCtrls, DBCtrls, StdCtrls, IBTable, IBDatabaseInfo; type TFIBSQL = class(TForm) IBSQL1: TIBSQL; IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; DataSource1: TDataSource; DBGrid1: TDBGrid; IBSQL2: TIBSQL; Button1: TButton; IBTable1: TIBTable; IBTable2: TIBTable; DataSource2: TDataSource; DBGrid2: TDBGrid; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var FIBSQL: TFIBSQL; implementation {$R *.dfm} procedure TFIBSQL.Button1Click(Sender: TObject); var Filename : String; RawOutput : TIBOutputRawFile; RawInput : TIBInputRawFile; begin IBSQL1.Sql.Text := 'Select country, currency from country'; IBSQL2.Sql.Text := 'Insert into Newcountry (country, currency) values(:first,:second)'; Filename := 'd:\DataFile.RAW'; //?COUNTRY???????? d:\DataFile.RAW ??? RawOutput:= TIBOutputRawFile.Create; try RawOutput.FileName := FileName; IBSQL1.BatchOutput(RawOutput); finally RawOutput.Free; end; //?d:\DataFile.RAW ?????????NEWCOUNTRY?? RawInput := TIBInputRawFile.Create; try RawInput.FileName := FileName; IBSQL2.BatchInput(RawInput); IBTable2.Close; IBTable2.Open; finally RawInput.Free; end; //???? IBSQL2.Transaction.CommitRetaining; end; procedure TFIBSQL.FormCreate(Sender: TObject); begin IBTable1.Open; IBTable2.Open; end; end.caso ainda tenha duvidas, veja:http://www.sqlmagazine.com.br/Colunistas/L..._exportacao.asphttp://qc.embarcadero.com/wc/qcmain.aspx?d=93446Manual Interbasehttp://www.gvsnet.nl/Interbase/v80/DevGuide.pdfOBS: procure entender o funcionamento do códigoabraço Quote Link to comment Share on other sites More sharing options...
0 pimpocvl007 Posted December 4, 2011 Author Report Share Posted December 4, 2011 ...bingo!Deu certo com sua dica.Mais uma vez, muito obrigado.Att.Olimpio Quote Link to comment Share on other sites More sharing options...
Question
pimpocvl007
Boa noite,
Utilizei o código abaixo para EXPORTAR os dados da minha tabela, funcionou perfeitamente. O problema esta no código de importação que da este erro:
[E-R-R-O]
Project 1
Dynamic SQL Error
SQL error code = -303
conversion error from string "1"
[E-X-P-O-R-T-A-R]
var
Delimitador: TIBOutputDelimitedFile;
begin
IBSQL1.SQL.Text := 'select CUST_NO, CUSTOMER, CITY from CUSTOMER';
Delimitador := TIBOutputDelimitedFile.Create;
try
Delimitador.Filename := 'C:\export_delim.exp';
IBSQL1.BatchOutput(Delimitador);
finally
Delimitador.Free;
end;
ShowMessage('Exportação realizada com sucesso');
end;
[i-M-P-O-R-T-A-R]
var
Delimitador: TIBInputDelimitedFile;
begin
IBSQL1.SQL.Text := 'insert into CUSTOMER values (:CUST_NO, :CUSTOMER, :CITY)';
Delimitador := TIBInputDelimitedFile.Create;
try
Delimitador.Filename := Edit1.Text;
IBSQL1.BatchInput(Delimitador);
finally
Delimitador.Free;
end;
ShowMessage('Importação realizada com sucesso');
end;
obs.: http://www.devmedia.com.br/post-2040-Expor...do-fb---ib.html
Como resolver?
Edited by pimpocvl007Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.