Solved

Embarcadero Interbase

Posted on 2014-02-06
9
748 Views
Last Modified: 2014-02-11
I want to create an Interbase table at run time like
var
  MyTable : TIBTable;
begin
  MyTable := TIBTable.Create(nil);
  MyTable.TableName := 'MyTableName';
  MyTable.Database := AnExistingDatabase;
  MyTable.FieldDefs.AddFieldDef.Name := 'Field1';
  MyTable.FieldDefs.AddFieldDef.DataType := ftInteger;
  MyTable.FieldDefs.AddFieldDef.Size := 0;
  MyTable.FieldDefs.AddFieldDef.Required := False;

  AnExistingDatabase.Open;
  MyTable.CreateTable;

This generates: Unsupported Field Type.


Also Tried to use TIBSQL component

Assign to a TIBSQL components SQL property with the text below
and set the TIBSQL database property to an IBDatabase component that points to
my database

Create Table "Table2"
(
  "Field1" Varchar(20) not null,
  "Field2" Float,
  primary key ("Field1")
);

procedure TForm1.Button2Click(Sender: TObject);
begin
  IBDatabase1.Open;
  IBSQL1.ExecQuery;
end;

I get the message Transaction Not assigned
0
Comment
Question by:CiaoBaby
9 Comments
 
LVL 26

Expert Comment

by:Sinisa Vuk
ID: 39840706
You want to create real table in ib database? If so - use plain sql (create table ...)
I you by create mean: TIBTable.Create(nil) - then you can use some of memory tables.
0
 
LVL 19

Assisted Solution

by:NickUpson
NickUpson earned 250 total points
ID: 39844970
(you don't need all the " characters in the create table statement

procedure TForm1.Button2Click(Sender: TObject);
begin
  IBDatabase1.Open;
         Here you need to start a transaction, IBSQL1.StartTrans I think;
  IBSQL1.ExecQuery;
          and here you need a commit
end;
0
 
LVL 24

Expert Comment

by:jimyX
ID: 39845001
I use FireBird which is close enough to Interbase:

Drop SQLTransaction and link it to the DBConnection and SQLQuery.
So you should have the following linking done first:
DBConnection.Transaction = SQLTrans
SQLTrans.Database = DBConnection
SQLQuery.Database = DBConnection
SQLQuery.Transaction = SQlTrans
0
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 

Author Comment

by:CiaoBaby
ID: 39848396
JimyX
When you say link SQLTransaction to the DBConnection and SQLQuery How?

TIBTransaction does not have a Database property
SQLQuery does not have a Database Property
SQLQuery does not have a Transaction property
0
 
LVL 24

Expert Comment

by:jimyX
ID: 39849282
I was referring to IBxxx components.
0
 
LVL 24

Accepted Solution

by:
jimyX earned 250 total points
ID: 39849402
So it should read:
  IBDatabase.DefaultTransaction := IBTransaction;
  IBTransaction.DefaultDatabase := IBDatabase;
  IBSQL.Database := IBDatabase;
  IBSQL.Transaction := IBTransaction;

Open in new window

0
 

Author Comment

by:CiaoBaby
ID: 39851422
Finally, success. That was painful.   I can't believe that on all the web there is no reference to how to do this.

It's so not complicated if you know all the steps and relationships.  It took me 2 days to figure this out.  Maybe I should have said that I do not know any SQL.  Maybe it's assumed that if you know any programming that you know all this crap.

Thanks for the help you guys.

procedure TForm1.Button1Click(Sender: TObject);
begin
  IBDatabase1.DatabaseName := 'c:\backupdbs\JPBD.IB';
  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('user_name=sysdba');
  IBDatabase1.Params.Add('password=masterkey');
  IBDatabase1.Open;
  IBDatabase1.DefaultTransaction := IBTransaction1;
  IBTransaction1.DefaultDatabase := IBDatabase1;

  IBQuery1.Transaction := IBTransaction1;
  IBQuery1.SQL.Clear;
  IBQuery1.SQl.Add('Create Table Employee4(PersonID Int, LastName varchar(255))');
  IBQuery1.Transaction.StartTransaction;
  IBQuery1.ExecSQL;
  IBQuery1.Transaction.Commit;

  //This also works
  //IBTransaction1.Commit;

  IBDatabase1.Close;
end;
0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
Never store passwords in plain text or just their hash: it seems a no-brainier, but there are still plenty of people doing that. I present the why and how on this subject, offering my own real life solution that you can implement right away, bringin…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now