Jump to content
Fórum Script Brasil
  • 0

(Resolvido) IBSQL1 - Exportar / Importar dados tabela


pimpocvl007

Question

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 pimpocvl007
Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Dynamic SQL Error

SQL error code = -303

conversion 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

Link to comment
Share on other sites

  • 0

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 Error

SQL error code = -303

conversion error from string "1"

reveja a definição de tipo de dados na sua tabela, e não precisará fazer nenhuma conversão

exemplo de uma conversão de tipo

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

abraço

Link to comment
Share on other sites

  • 0

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.

Obrigado

Olimpio

Link to comment
Share on other sites

  • 0

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 tipo

outro exemplo se uso:

http://files.edin.dk/php/win32/dev/php_bui...les/o8idemo.sql

abraço

Link to comment
Share on other sites

  • 0

...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 by pimpocvl007
Link to comment
Share on other sites

  • 0

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

http://qc.embarcadero.com/wc/qcmain.aspx?d=93446

Manual Interbase

http://www.gvsnet.nl/Interbase/v80/DevGuide.pdf

OBS: procure entender o funcionamento do código

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...