[VB6]hoe het makkelijkst een dynamisch DB bereiken

Pagina: 1
Acties:

  • ND863
  • Registratie: September 2001
  • Laatst online: 09-07-2022

ND863

Forget aircraft - Fly Airbus

Topicstarter
Ik ben een programma aan het maken met een DataBase. Maar hij word ook gebruikt door andere mensen, dus als iemand anders hem installeert, kan die op verschillende plaatsen staan, en heb ik er een beetje moeite mee (deze n00b wel ja :)) hoe ik die DB dan toch kan bereiken.
Na lang zoeken had ik een idee met de code : app.path., het ziet er nu zo uit :
code:
1
2
3
4
5
6
7
8
9
10
Private Sub Form_Load()
  Dim datasrc As Variant
  Dim prvd As Variant
  Dim dbsecu As Variant
  prvd = "Provider=Microsoft.Jet.OLEDB.4.0;"
  datasrc = "Data Source=" + App.Path + "\database\data.mdb"
  dbsecu = ";Persist Security Info=False"
  Adodc1.ConnectionString = prvd + datasrc + dbsecu
  MsgBox Adodc1.ConnectionString
End Sub

'Dit is op DIT moment de plaats van de Database
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual
Studio\VB98\Database\data.mdb;Persist Security Info=False

Maar hij kan nog steeds NIET de DB bereiken, hij zegt dat de stuurprogramma niet goed is. :7 Dat snap ik best, want dat geklooi met mijn code is niet de beste en makkelijkste volgens mij. Ik weet zeker dat dit beter kan, alleen heb geen flauw idee hoe.

To be, or not to be a FRUITVLIEG!??


  • ND863
  • Registratie: September 2001
  • Laatst online: 09-07-2022

ND863

Forget aircraft - Fly Airbus

Topicstarter
sorry dat ik schop, maar het progje moet eigenlijk voor 16:15 af zijn... :7

To be, or not to be a FRUITVLIEG!??


Verwijderd

Ik zou een ODBC koppeling gebruiken (Start > Control Panel > Administrative Tools > Data Sources (ODBC).

Zo hoef je alleen maar bij een nieuwe installatie op een andere server zo'n koppeling (met een door jou bepaalde naam) aan te maken en je bent klaar.

Dan maakt 't verder ook niet meer uit of je een Access database gebruikt of een SQL Server of wat anders.

Kijk hier http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnado/html/msdn_workshp2.asp hoe je zoiets aanspreekt.

  • ND863
  • Registratie: September 2001
  • Laatst online: 09-07-2022

ND863

Forget aircraft - Fly Airbus

Topicstarter
Op donderdag 02 mei 2002 15:16 schreef daxx909 het volgende:
Ik zou een ODBC koppeling gebruiken (Start > Control Panel > Administrative Tools > Data Sources (ODBC).

Zo hoef je alleen maar bij een nieuwe installatie op een andere server zo'n koppeling (met een door jou bepaalde naam) aan te maken en je bent klaar.

Dan maakt 't verder ook niet meer uit of je een Access database gebruikt of een SQL Server of wat anders.
Dan zou het dus ook kunnen met een Microsoft Data Link? (*.UDL) maar dan zou de andere user die hem installeert, zelf een link aanmaken, en dat wil ik nou juist niet hebben...

edit:

aai, te laat, ben nu ff de link aan et checken

To be, or not to be a FRUITVLIEG!??


Verwijderd

Ik zou (wanneer meerdere mensen er gebruik van moeten maken) die database op een server zetten, en de clients hiermee laten connecten. Hoe wil je anders je data synchroon houden?

Wat is 't eigenlijk voor een soort programma?

  • ND863
  • Registratie: September 2001
  • Laatst online: 09-07-2022

ND863

Forget aircraft - Fly Airbus

Topicstarter
Op donderdag 02 mei 2002 15:24 schreef daxx909 het volgende:
Ik zou (wanneer meerdere mensen er gebruik van moeten maken) die database op een server zetten, en de clients hiermee laten connecten. Hoe wil je anders je data synchroon houden?

Wat is 't eigenlijk voor een soort programma?
via een server is geen optie, en onderhoud is niet zo probleem. Er komen wat gegevens in te staan van wat Users en hun ID's, het is alleen om makkelijk info op te zoeken van die User. Ik heb ff die link bekeken, maar wat vraagjes erbij :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub ConnectionExample2()
   Dim cnn As ADODB.Connection
   Set cnn = New ADODB.Connection

   ' Open a connection using an ODBC DSN.
   cnn.ConnectionString = "DSN=Pubs;UID=sa;PWD=;"
   cnn.Open

   ' Find out if the attempt to connect worked.
   If cnn.State = adStateOpen Then
    MsgBox "Welcome to Pubs!"
   Else
    MsgBox "Sorry. No Pubs today."
   End If

   ' Close the connection.
   cnn.Close

End Sub

Hoe weet deze code nou welke DB hij moet connecten? :7

To be, or not to be a FRUITVLIEG!??


Verwijderd

Dat weet hij doordat jouw ODBC koppeling (DSN) blijkbaar 'Pubs' heet :)

Het pad naar die database heb je in de koppeling moeten aangeven.

  • ND863
  • Registratie: September 2001
  • Laatst online: 09-07-2022

ND863

Forget aircraft - Fly Airbus

Topicstarter
Op donderdag 02 mei 2002 15:50 schreef daxx909 het volgende:
Dat weet hij doordat jouw ODBC koppeling (DSN) blijkbaar 'Pubs' heet :)

Het pad naar die database heb je in de koppeling moeten aangeven.
En hoe kan ik die path dynamisch maken? (Misschien moet ik toch maar ff over die Server optie nadenken...

To be, or not to be a FRUITVLIEG!??


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 08-09 17:54

Sponge

Serious Game Developer

Dit komt omdat je een lange bestandsnaam hebt

Gebruikt dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Public Function GetShortName(ByVal strLongFileName As String) As String
    Dim lngRetVal As Long, strShortPathName As String, intLen As Integer

    '//This function is used to get a short path ("c:\mydocs~1\")
    '//Fill buffer
    strShortPathName = Space$(255)
    
    '//Length of the string
    intLen = Len(strShortPathName)
    
    lngRetVal = GetShortPathName(strLongFileName, strShortPathName, intLen)

    GetShortName = Left$(strShortPathName, lngRetVal)
End Function

Edit, zo dus:
code:
1
2
3
4
5
6
7
8
9
10
Private Sub Form_Load()
  Dim datasrc As String
  Dim prvd As String
  Dim dbsecu As String
  prvd = "Provider=Microsoft.Jet.OLEDB.4.0;"
  datasrc = "Data Source=" & GetShortName(App.Path & "\database\data.mdb")
  dbsecu = ";Persist Security Info=False"
  Adodc1.ConnectionString = prvd & datasrc & dbsecu
  MsgBox Adodc1.ConnectionString
End Sub

Gebruikt NOOIT een variant... dit geeft alleen maar ellende, en is TRAAG! (zie sig) (en gebruik & om text toetevoegen, en + bij rekenen :))
Pagina: 1