Solved

dynamic connection string

Posted on 2004-09-22
7
335 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
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
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Convert GUI app into console app for Win32 Env 5 109
Reconfigure Delphi Install? 2 59
Find and Replace Stream with 0s 8 69
Delphi and Access based Enumeration 9 70
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used.

792 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