Question

Creating ms access database in realtime error

Asked by: delphibeginner

I want to try to create a ms access database in realtime with delphi, and I used the example on about delphi (http://delphi.about.com/od/database/l/aa072401b.htm) to do so, but I get the following message:

[DCC Error] test1.pas(68): E2010 Incompatible types: 'TStrings' and 'string'

This is related to the cs in the code.

So here is what I want to do, Form.oncreate I want the app to create a ms access database (with table and columns), then get it filled from the online database (I'll look into that, so that's not my question).

My question is howto create a database in realtime.

Thanks in advanced.

Here is the code I use at the moment.

procedure TForm1.FormCreate(Sender: TObject);
var
  sDatabaseName: String;
  sApplicationPath: String;
  sDatabasePath: String;
  DataSource : String;
  dbName     : String;
begin
  dbName:='iccsongs.mdb';
  sApplicationPath:=ExtractFilePath(Application.exename);
  sApplicationPath:=sApplicationPath+'\';
  sDatabasePath:=sApplicationPath+dbName;
 
  DataSource :=
    'Provider=Microsoft.Jet.OLEDB.4.0' +
    ';Data Source=' + dbName +
    ';Jet OLEDB:Engine Type=5';
 
  ADOXCatalog1.Create1(DataSource);
  if (FileExists(dbName)) then
    AccessConnect;
    ADConnection1.LoginPrompt := False;
    ADCommand1.Connection := ADConnection1;
 
    cs:='CREATE TABLE songs (' +
       'Id AUTOINCREMENT,' +
       'Songtitle TEXT(50),' +
       'Genre TEXT(50),' +
       'Songtext MEMO)';
    ADCommand1.CommandText := cs;
    ADCommand1.Execute;
 
    cs:='CREATE INDEX idxPrimary '+
     'ON songs (id) WITH PRIMARY';
    ADCommand1.CommandText := cs;
    ADCommand1.Execute;
end;

                                  
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-09-07 at 05:26:05ID24712484
Tags

MS Access

,

database

,

delphi

,

ADO

Topics

Delphi Database

,

Microsoft Access Database

,

Delphi IDE

Participating Experts
2
Points
0
Comments
19

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Embedded Vs Realtime
    What is the difference between Embedded Software and RealTime Software?
  2. Realtime and WinNT
    I'm currently developing an application under NT, which periodically sends data to the parallel port every 50 ms with a tollerance of max +/- 125ms. I tried several ways to implement this with Multimedia Timers and with own threads with highest thread priority. But in some...
  3. Realtime Form
    In Oracle Form 6.0 How to make a form that act like a realtime software, if other user update or add new record to table being used by Form Block will refresh (execute query) again Now I use timer, every X minute execute query but it's very2 bad Thank's a lot [nds]
  4. Realtime Screen Updating
    Hello, I am most interested in creating a remote administration program like VNC or RAdmin in Delphi 5.0 which updates the server's screen in realtime to the client. I would like to know if anyone would have any suggestions or help they could give me of actually transmitting ...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: ramromPosted on 2009-09-07 at 05:46:46ID: 25274659

Could you tell us which line of code raises the error?

 

by: delphibeginnerPosted on 2009-09-07 at 06:00:33ID: 25274747

Line 30 (with the cs).

 

by: delphibeginnerPosted on 2009-09-07 at 06:01:55ID: 25274757

btw I have cs : string in the private part code, even under var (above) I get the same error.

 

by: senadPosted on 2009-09-07 at 06:52:04ID: 25275062

It's very simple to create a empty Access-Database (*.mdb File) using OLE. It's not necessary to have MS-Access installed on your computer. If an exception occures the error message will returned. After creating the DB you can create Tables with simple SQL-Statements.


uses comobj,sysutils;

function CreateAccessDatabase(FileName : String) : String;
var cat : OLEVariant;
begin
result := '';
try
  cat := CreateOleObject('ADOX.Catalog');
  cat.create ('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Filename+';');
  cat := NULL;
except
  on e : Exception do result := e.message;
end;
end;

 

by: delphibeginnerPosted on 2009-09-07 at 15:54:49ID: 25277705

Thanks, how can I get all the records from my online database into the ms access database just created?

I know I can do that with an SQL query
I've looked on the internet for a good tutorial, but the ones I found where from table1 into table2 in the same database and what I want is total different.

Hope you can point me into the right direction?

Thanks in advanced.

 

by: ramromPosted on 2009-09-07 at 17:08:26ID: 25277962

I neglected to ask why you want to do this. Are you migrating from online to Access. If not you don't need to copy records, you can just link Access to the online table(s).

IMHO the easiest way to copy the records is to open the Access database, link to the table(s) and run MakeTable query(s), or to import them.

 

by: delphibeginnerPosted on 2009-09-07 at 21:58:12ID: 25278725

I'll be willing to answer your question. The app I'm creating can't run if there isn't a connection to the online database (no internet, I know it's almost impossible), but still if it happends, then the app can connect to the latest database (with most updated records in the ms access database (they don't update that fast).

About your last part. Is there an example, because looked on the internet for an example but couldn't find anything yet.

Thanks

 

by: senadPosted on 2009-09-08 at 09:40:22ID: 25283649

ms access has export import incorporated so that is easy.

 

by: delphibeginnerPosted on 2009-09-08 at 11:54:26ID: 25284935

I know that, but how to do an import without using ms access itself.

 

by: senadPosted on 2009-09-08 at 14:10:07ID: 25286198

use ODBC ...

 

by: senadPosted on 2009-09-08 at 14:12:22ID: 25286216

 

by: senadPosted on 2009-09-08 at 14:14:25ID: 25286238

How To Export and Import Access Tables Using DAO or ODBC:
http://support.microsoft.com/kb/200427

 

by: senadPosted on 2009-09-08 at 14:20:47ID: 25286283

One way would be to have  2 connection strings (one for your database) and one for online database.Have all the tables as well then just do a record copy from one table to another.

 

by: delphibeginnerPosted on 2009-09-08 at 15:30:39ID: 25286723

Your last comment is sort of the plan, I have a code already, but nothing is copied yet (the ms access database exists and the table with columns also).

Here is the code I use, maybe you can help me out with that:

Thanks

procedure TForm1.FormCreate(Sender: TObject);
var Source, Target : TAdQuery;
     teller : integer;
begin
  ADConnection2.Connected := True;
  AccessConnect;
  Source := TADQuery.create(nil);
  Target := TADQuery.create(nil);
  try
    Source.connection := ADConnection2;
    Target.connection := ADConnection1;
    Source.SQL.Text := 'SELECT * FROM songs';
    Target.SQL.Text := 'INSERT * INTO songs';
    Source.Active := True;
    Target.Active := True;
    while not Source.eof do
    begin
       Target.Append;
       for teller := 0 to Source.fieldcount -1 do
           Target.Fields[teller].Value := Source.Fields[teller].value;
       Target.Post;
       Source.next;
    end;
  finally
     if Source.active then Source.active := false;
     if Target.active then Target.active := false;
     Source.free;
     Target.Free;
  end;
end;

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:

Select allOpen in new window

 

by: senadPosted on 2009-09-08 at 18:35:56ID: 25287652

dont know why you people create components on the fly...for what reason or purpose?If you got' to have it you got' to have it.So just use it...Just drop 2 adoconnections,adotables on the form and one queery.
Link 1 connection to server and the other one to your application.
Link table1 to server.songs other to local.songs and just bang the queery to copy/append from one table to another.

 

by: senadPosted on 2009-09-08 at 18:43:31ID: 25287684

For the server connection I usually use a function (which checks the connection) as usually the server is the one giving hard time.If server has no connection everything else is pointless.So care must be taken in connecting to server,
Good practice is to use TRY FINALLY EXCEPT with logging to text file.
Npwdays to connect securely to server is a real pain in the ass.Bypassing firewalls is a nice sport.I busted my balls one afternoon just to find NOD blocking my connection.

 

by: senadPosted on 2009-09-08 at 18:46:05ID: 25287691

and if you are going to synchronise the tables then either you must copy only newly added records.Otherwise you will have to delete everything first in your table and then append...

 

by: delphibeginnerPosted on 2009-09-09 at 12:09:22ID: 25294494

Sorry I'm still kinda stuck, do you maybe have an example (the link you gave me to the microsoft site, was not really clear, sorry).

I've change the connections (names) so I can't make a mistake on which is the source and which is the target, hope you can help me, I'm soft of on a tight schedule.

Here again the whole code I use at this moment (hope you can make something out):

Thanks

unit test1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uADStanIntf, uADStanOption, uADStanDef, uADPhysIntf, uADGUIxIntf,
  uADDatSManager, uADStanError, uADStanParam, uADDAptIntf, DB, uADCompDataSet,
  uADCompClient, Grids, DBGrids, uADPhysManager, uADPhysODBCBase, uADPhysMSAcc,
  uADGUIxFormsWait, ADODB, OleServer, ADOX, comobj, uADPhysMySQL;
 
type
  TForm1 = class(TForm)
    AD_Access: TADConnection;
    ADQuery1: TADQuery;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADPhysMSAccessDriverLink1: TADPhysMSAccessDriverLink;
    ADGUIxWaitCursor1: TADGUIxWaitCursor;
    ADCommand1: TADCommand;
    ADOXCatalog1: TADOXCatalog;
    AD_MySQL: TADConnection;
    ADQuery2: TADQuery;
    ADPhysMySQLDriverLink1: TADPhysMySQLDriverLink;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure AccessConnect;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var Source, Target : TAdQuery;
     teller : integer;
begin
  AD_MySQL.Connected := True;
  AccessConnect;
  Source := TADQuery.create(nil);
  Target := TADQuery.create(nil);
  try
    Source.connection := AD_MySQL;
    Target.connection := AD_Access;
    Source.Open();
    Target.Open();
    Source.SQL.Text := 'SELECT * FROM songs';
    Target.SQL.Text := Source.SQL.Text;
    Source.Active := True;
    Target.Active := True;
    while not Source.eof do
    begin
       Target.Append;
       for teller := 0 to Source.fieldcount -1 do
           Target.Fields[teller].Value := Source.Fields[teller].value;
       Target.Post;
       Source.next;
    end;
  finally
     if Source.active then Source.active := false;
     if Target.active then Target.active := false;
     Source.free;
     Target.Free;
  end;
end;
 
procedure TForm1.AccessConnect;
var
  sDatabaseName: String;
  sApplicationPath: String;
  sDatabasePath: String;
begin
  sApplicationPath:=ExtractFilePath(Application.exename);
    if sApplicationPath[Length(sApplicationPath)]<>'\' then
        sApplicationPath:=sApplicationPath+'\';
        sDatabasePath:=sApplicationPath+sDatabaseName;
        if (FileExists(sDatabasePath)=true) then
          begin
            with AD_Access.Params do begin
              Add('DriverID=MSAcc');
              Add('Database=' + sDatabasePath);
            end;
              AD_Access.Connected := True;
          end;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  with ADQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT Id, Songtitle, Genre, Songtext FROM songs');
    SQL.Add('ORDER BY Songtitle ASC');
    Open;
  end;
end;
 
end.

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:

Select allOpen in new window

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...