Solved

dynamic connection string

Posted on 2004-09-22
7
338 Views
Last Modified: 2012-05-05
hello friends mine, today i have a simple question....

im working with a control TADOConnection, since now i was working with a static connectionstring,
but now, my aplication requires to be able to change the path from the application...just for make it configurable :) ....
so  i  have this code


procedure Tfrm_tmp.FormCreate(Sender: TObject);
begin
  try
    dbpath:='D:\bd_pd.mdb';
    conexion.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=MS       Access Database;DBQ='+dbpath+';DefaultDir=C:;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;";Initial Catalog='+dbpath;
 except
 end;
end;

Where frm_tmp is the main form ....
the wrong is when i try to catch the error when the path isnt found... because a lot of forms depends of the connectionstring and those forms were created at the beging of application

 



0
Comment
Question by:BaTy_GiRl
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 13

Expert Comment

by:BlackTigerX
ID: 12123998
don't put that code in the OnCreate event of your form, but instead put it in the "Start" button OnClick event of your program, where it actually goes and uses that database
by doing it this way, you can change the configuration without having to close the program, just Stop the program, fix your configuration, Start, and you are ready to go, if it fails, then the "start" process fails, and you don't let the program continue

the other thing is, don't hardCode values, read them at least from an .ini file
for that, you can use something like this (put IniFiles in your uses clause)

  with TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
  try
    dbPath:=ReadString('DB', 'DBPath', 'd:\db_pd.mdb');
  finally
    Free
  end
0
 
LVL 13

Accepted Solution

by:
BlackTigerX earned 50 total points
ID: 12124057
if you don't have a "Start" kind of thing, then if the other forms have datasets pointing to This connection, check to see if the connection if Active before opening any of the other forms where requested by the user, if is not active, then try to activate it at that point

The thing is, if you want to use dinamyc connection string, it doesn't make much difference if you only create it in the OnCreate event of your form, is not really very dinamyc, is is "TRULY" dinamic, if you create it ONLY when you need it
0
 

Author Comment

by:BaTy_GiRl
ID: 12124137
do you mean in the second option that i use a file to specify the path?
i`m getting that information from windows registry and i thing is surely

about the first option
>put it in the "Start" button OnClick event of your program, where it actually goes and uses that database

well the problem is that i have like 35 forms calling anothers and almost all of them uses the database

:( thanks
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:BaTy_GiRl
ID: 12124215
im agree with you  at this point
> OnCreate event of your form, is not really very dinamyc, is is "TRULY" dinamic, if you create it ONLY when you need it

let me try with that idea....and i will tell you what did happen= )
thanks


0
 
LVL 12

Expert Comment

by:Ivanov_G
ID: 12128320
if FileExists(dbpath) then ...
0
 
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 12141071
--> well the problem is that i have like 35 forms calling anothers and almost all of them uses the database
In this case i'd use simply the OnBeforeConnect event and check there if dbPath exists
This way you don't need to put a check somewhere, 'cause every time any form try to open the connection the event is fired.

so something like

procedure TForm1.ADOConnection1BeforeConnect(Sender: TObject);
begin
If not FileExists(dbpath) then
 begin
     // SHowMessage('Path Not Found'); or you can use an opendialog or something else to force an existent path
      //Abort;  If you want to stop the connection
   end;
   conexion.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=MS       Access Database;DBQ='+dbpath+';DefaultDir=C:;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;";Initial Catalog='+dbpath
end;

And i repeat this event is fired due to a call to conexion.connected := true or conexion.open, so from whereever is needed

F68 ;-)
0
 

Author Comment

by:BaTy_GiRl
ID: 12145932
it sems like very good idea Ferruccio68, i haven´t tried yet .....
but my program is working as  BlackTigerX told me, the connection string is in all forms
but i alwas tought that it was another way.
so thanks for your help me im going to accept the two answers

=) greetings

0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

732 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