Toon posts:

[VB.NET & ADO.NET] Access database dynamisch koppelen

Pagina: 1
Acties:
  • 172 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik zou graag een access database dynamisch koppelen aan een facturatie programma dat ik geschreven heb. Het programma zelf is nog in ontwikkeling. Het is de bedoeling dat als ik een setup creeer dat ik de connectionstring niet meer hoef aan te passen. De database komt in de root map van het programma. Voorlopig heb ik deze connectionstring (gegenereerd door Visual Studio):

Visual Basic .NET:
1
2
3
4
5
6
7
8
Me.cnnFactuur.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
        "ocking Mode=1;Jet OLEDB:Database Password=;Data Source=""C:\Documents and Setting" & _
        "s\6BI01\Bureaublad\school\Factuur\Schoolfactuur.mdb"";Password=;Jet OLEDB:Engine " & _
        "Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";J" & _
        "et OLEDB:System database=;Jet OLEDB:SFP=False;Extended Properties=;Mode=Share De" & _
        "ny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System Database=False;" & _
        "Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica " & _
        "Repair=False;User ID=Admin;Jet OLEDB:Encrypt Database=False"


Het is dus de datasource die moet aangepast worden. Ik heb al op diverse fora gezocht, en ook hier, maar ik ben niets tegengekomen die mij de oplossing gaf.

Kan iemand mij tips geven?

Verwijderd

De connectionString is gewoon een string met daarin het pad naar de database
code:
1
Data Source=""C:\Documents and Settings\6BI01\Bureaublad\school\Factuur\Schoolfactuur.mdb""


Als je in je programma de directory uitleest waar je executable staat kun je eenvoudig dat pad in je connectionstring gooien.

  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

ODBC (met system DSN) geen oplossing of is dat te traag?

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 16-04 11:36

pjvandesande

GC.Collect(head);

Je kunt toch de connection string zelf renderen, dat is niet zo lastig. Je hoeft alleen het path naar de database te hebben en verder blijft alles altijd hetzelfde.

code:
1
2
3
4
public string CreateConnectionString( string path )
{
     return string.Format( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User Id=admin;Password=;", path ); 
}

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 24-04 20:55

gorgi_19

Kruimeltjes zijn weer op :9

questa schreef op donderdag 10 november 2005 @ 07:46:
Je kunt toch de connection string zelf renderen, dat is niet zo lastig. Je hoeft alleen het path naar de database te hebben en verder blijft alles altijd hetzelfde.

code:
1
2
3
4
public string CreateConnectionString( string path )
{
     return string.Format( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User Id=admin;Password=;", path ); 
}
Waarom zet je de connectionstring niet in de app.config of de web.config?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
De database moet gewoon automatisch ingevuld worden op gelijk welke pcen in gelijk welke map de applicatie geïnstalleerd word. Dus moet je nergens het pad opgeven van de database. Deze staat gewoon in de homedir van de applicatie. Ik zoek dus iets zodat de database onmiddellijk ingevuld wordt met iets als server.mappath(), maar dit werkt alleen voor asp.net dacht ik. In de connectionstring zou ik eigenlijk enkel database.mdb mogen staan hebben. En niet C:\....\database.mdb. Een dsn zie ik niet onmiddellijk zitten omdat die op iedere pc waar het programma op geïnstalleerd is, ook aangemaakt moet worden.

  • Boss
  • Registratie: September 1999
  • Laatst online: 07:36

Boss

+1 Overgewaardeerd

Wat is er dan mis mee om bij het opstarten van het programma de link naar de database automatisch in te stellen voordat de connectie geopend wordt? Heb ik vaak gedaan (in Delphi weliswaar) en dat werkt prima.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 16-04 11:36

pjvandesande

GC.Collect(head);

gorgi_19 schreef op donderdag 10 november 2005 @ 12:17:
[...]

Waarom zet je de connectionstring niet in de app.config of de web.config?
Het ging gewoon om het voorbeeld. Overigens, waarom zou je dit gedeelte in een app.config zetten als je altijd gebruik maar van een OleDbConnection en alles het path dynamisch moet zijn?
Verwijderd schreef op donderdag 10 november 2005 @ 18:30:
De database moet gewoon automatisch ingevuld worden op gelijk welke pcen in gelijk welke map de applicatie geïnstalleerd word. Dus moet je nergens het pad opgeven van de database. Deze staat gewoon in de homedir van de applicatie. Ik zoek dus iets zodat de database onmiddellijk ingevuld wordt met iets als server.mappath(), maar dit werkt alleen voor asp.net dacht ik. In de connectionstring zou ik eigenlijk enkel database.mdb mogen staan hebben. En niet C:\....\database.mdb. Een dsn zie ik niet onmiddellijk zitten omdat die op iedere pc waar het programma op geïnstalleerd is, ook aangemaakt moet worden.
code:
1
2
3
4
5
6
7
8
9
10
private void DoConnectMelp()
{
     // Nu krijg je de connection string met het path naar je startup directory + myDB.mdb
     string connString = CreateConnectionString( Application.StartupPath + @"\myDB.mdb" );
}

public string CreateConnectionString( string path )
{
     return string.Format( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User Id=admin;Password=;", path ); 
}
Pagina: 1