Solved

how can i create a DSN in runtime

Posted on 2003-10-28
10
450 Views
Last Modified: 2010-05-01
i'm work win a access 2000 db, and  i just want to create the DSN with code, but before use de code i want con ask if the DSN exist, if the code exist i just use it, if it don't exist i create it  

i'm developing an aplication that use Crytal Report 8.5, it suppouse that the user can install this aplication in any folder; therefore the aplication should detect the data sources that will use the crytal report
0
Comment
Question by:darknighter
  • 3
  • 3
  • 2
  • +2
10 Comments
 
LVL 9

Accepted Solution

by:
_ys_ earned 125 total points
ID: 9634203
Check under the registry key
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]
for the dsn you're expecting to see - it'll be a string value - the value will be "Microsoft Access Driver (*.mdb)".

If it's not there create that string value, and also the following entries
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]
"{your_dsn_name}"="Microsoft Access Driver (*.mdb)"

Also add the following to define your dsn.
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\{your_dsn_name}]
"Driver"="C:\\{your_system_32_directory}\\odbcjt32.dll"
"DBQ"="C:\\{complete_path}\\{file_name}.mdb"
"Description"="{whatever}"
"DriverId"=dword:00000019
"FIL"="MS Access;"
"SafeTransactions"=dword:00000000
"UID"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\{your_dsn_name}\Engines]
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\{your_dsn_name}\Engines\Jet]
"ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"


I'm sure there's gotta be an easier way, but this is a method I've used before.
0
 

Expert Comment

by:marcomania
ID: 9634730
Did you already tried it without this check?
As far as I know, if the DSN doesn't exists it is created automatically.
0
 
LVL 18

Expert Comment

by:Sethi
ID: 9638085
Why not use a DSNless connection. All you have to do is create a connection string and open the connection object at runtime. In connection string you will pass all required parameters like data source name and username, passord etc. Here are two sites where you can find connection string for various databases:
http://www.connectionstrings.com
http://www.able-consulting.com/ADO_Conn.htm
0
 
LVL 18

Expert Comment

by:Sethi
ID: 9638137
Here is an example:

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\My Documents\myDatabase.mdb;"
cnn.Open
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 9638179
0
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 

Author Comment

by:darknighter
ID: 9644621
emoreau, what is method for Access Database
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 9644771
0
 

Author Comment

by:darknighter
ID: 9646936
Not execute, the code is obsolete
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 9647259
???

DSNs are obsolete! Is it working or not?
0
 
LVL 18

Expert Comment

by:Sethi
ID: 9647299
Did you try DSNless connection as I mentioned above?
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

707 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