Zum Inhalt springen

Gemeinsame Nutzung einer DB


Amin

Empfohlene Beiträge

ich möchte für 4 Leute ein Vb Programmm schreiben, Erfassung und ausgeben von daten(Access),was wäre am schlausten, alle 4 befinden sich in einem Netzwerk, der Rechner, in dem ich das Programm entwickele ist auch im Netz und kann auch als Lagerort der Datenbank sein,jeder soll von m ir eine Setup programm davon bekommen, also was soll ich machen wie soll die verbindungsart sein damit alle auf die Datenbank(Rechner 1)zugreifen und bearbeiten, meine Verbindungsart ist wie folgt:

DBPfad = App.Path & "\Gesamt.mdb"

PW = ""

Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=" & PW & ";Persist Security Info=False;Data Source=" & DBPfad & ";Mode=Read|Write"

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Amin

ich möchte für 4 Leute ein Vb Programmm schreiben, Erfassung und ausgeben von daten(Access),was wäre am schlausten, alle 4 befinden sich in einem Netzwerk, der Rechner, in dem ich das Programm entwickele ist auch im Netz und kann auch als Lagerort der Datenbank sein,jeder soll von m ir eine Setup programm davon bekommen, also was soll ich machen wie soll die verbindungsart sein damit alle auf die Datenbank(Rechner 1)zugreifen und bearbeiten, meine Verbindungsart ist wie folgt:

DBPfad = App.Path & "\Gesamt.mdb"

PW = ""

Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=" & PW & ";Persist Security Info=False;Data Source=" & DBPfad & ";Mode=Read|Write"

Vorsicht. Access datenbank ist eine Desktopdatenbank. Ist also für Multibenutzer-Systeme nicht optimiert. Die gleichzeitige Benutzung von ca. 12 Nutzer haben bei mir Erfahrungsgemäß jedoch keine Probleme gemacht. Wichtig ist nur eine relgelmäßige Datensicherung. am besten täglich. So kann nichts mehr schief gehen.

Nutze ADO und versuch möglichst kurzzeitige Datenbankverbindung zu haben, in dem du die Daten holst und die verbindung zur Datenbank trennst.

Also mit Datenbank nur dann connecten, wenn du auch was von der Datenbank willst. Das macht nicht nur deine Applikation schneller, sondern entlastet die access-file sehr. Also eine permanente Verbindung zur Datenbank auf jedenfall vermeiden, was wiederum bei einem Ein-User-System sinnvoller wäre... (kommt aber auch auf anwendungsfall an..) Hast du z. b. Importvorgänge wo du dann tausende von Daten importieren willst. bzw. einlesen willst, dann ist es sinnvoller nicht verbindungslos zu arbeiten. (Kommt aber wie gesagt auf Anwendugnsfall an...)

gruss

blear

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nutze ADO und versuch möglichst kurzzeitige Datenbankverbindung zu haben, in dem du die Daten holst und die verbindung zur Datenbank trennst.

der Sinn dieses Satzes habe ich verstanden aber wie das geht weisse ich nicht es ist mein erste Programm das ich entwickele, ich wäre dir dankbar wenn du mir vielleicht zeigst wie die Zeile aussehen um die Verbindung kurzzeitig zu zu ermöglichen

Link zu diesem Kommentar
Auf anderen Seiten teilen

/OT

Originally posted by KleinerChaot

Hi Leute,

sgat mal warum programmiert ihr denn alle in VBA ist das so im Kommen?? ...

Das einzige Vorkommen der Sequenz "VBA" auf dieser Seite ist in Deinem Beitrag.

/OT

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Amin

Nutze ADO und versuch möglichst kurzzeitige Datenbankverbindung zu haben, in dem du die Daten holst und die verbindung zur Datenbank trennst.

der Sinn dieses Satzes habe ich verstanden aber wie das geht weisse ich nicht es ist mein erste Programm das ich entwickele, ich wäre dir dankbar wenn du mir vielleicht zeigst wie die Zeile aussehen um die Verbindung kurzzeitig zu zu ermöglichen

Kapselung würde dir hier ungemein helfen.

Schreib eine Funktion womit du die Verbindung aufbaust.. connect()

Schreib eine Funktion womit du die Verbindung trennst. disconnect()

schreib eine Funktion womit du ein Rrecordset erzeugen kannst. CreateRecordset(Sql as string) as Adodb.REcordset

Dein Recordset_object hat ein Property Namens AcitveConnection.

Set rs.ActiveConnection = nothing

und shcon ist dein Rs verbindungslos.

Voraussetzung dafür ist, wie du dein RS öffnest.. BatchOptimistisch solltest du dein Recordset öffnen. Sonst geht das nicht.



Friend Function fCreateRS(sql As String, Optional myCursorLocation As ADODB.CursorLocationEnum = adUseClient, _
Optional myLockType As ADODB.LockTypeEnum = adLockOptimistic, _
Optional myCursorType As ADODB.CursorTypeEnum = adOpenKeyset) As ADODB.Recordset
On Local Error GoTo ErrHandler
Dim myrs As New ADODB.Recordset
fConnect
myrs.CursorLocation = myCursorLocation
myrs.Open sql, poConn, myCursorType, myLockType
If Err Then Set myrs = Nothing
Set fCreateRS = myrs
Exit Function
ErrHandler:
Resume Next
End Function

Friend Function fExec(sql As String) As Integer
On Local Error GoTo ErrHandler
Dim myInt As String
fConnect
poConn.Execute sql, myInt
If Err Then myInt = -1
fExec = myInt
Exit Function
ErrHandler:
Resume Next
End Function

Friend Function fConnect() As Boolean
On Local Error GoTo ErrHandler
Dim ok As Boolean
ok = True
If poConn Is Nothing Then Set poConn = New ADODB.Connection

If poConn.State <> 1 Then
poConn.Open pConnString

If Err Or poConn.State = 0 Then
RaiseEvent FaildToConnect
pShowDialog
'fConnect
End If
End If
ok = Err = 0
fConnect = ok
Exit Function
ErrHandler:
Resume Next
End Function

[/PHP]

Achte bitte darauf, dass es sich in diesem Beispiel nur um eine Kapselung handelt. Die Trennung der zwei Objekte Connection und Recordset musst du dann schon selbst machen..

Desweiteren fehlt hier die Disconnect-Methode..

du musst dann einfach die Close Methode des Con-Objektes aufrufen..

gruss

blear

Link zu diesem Kommentar
Auf anderen Seiten teilen

Option Explicit

Private conn1 As Connection

Public rs1 As Recordset

Public rs2 As Recordset

Public sql1 As New Command

Private fehler As Long

Public Function connect_db(ByVal datenbank As String, ByVal user As String, password As String) As Boolean

On Error Resume Next

'Anmeldung an der Datenbank, bei Fehler meldet die Funktion "False", sonst "True"

'Wird einmal beim Start des Hauptprogramms aufgerufen

Set conn1 = New Connection

conn1.CursorLocation = adUseClient

conn1.Open "Data Source=" & datenbank & "; User ID=" & user & "; PWD=" & password

'Setzen der SQL-Parameter, wird nur einmal gemacht

sql1.ActiveConnection = conn1

sql1.CommandType = adCmdText

fehler = Err.Number

On Error GoTo 0

If fehler = 0 Then connect_db = True Else connect_db = False

End Function

Public Sub disconnect_db()

On Error Resume Next

'Verbindung schließen

conn1.Close

On Error GoTo 0

End Sub

Public Sub kill_db_objects()

'Objekte auf Nothing setzen, wird beim Beenden des Hauptprogramms aufgerufen

Set conn1 = Nothing

Set rs1 = Nothing

Set rs2 = Nothing

Set sql1 = Nothing

End Sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast
Dieses Thema wurde nun für weitere Antworten gesperrt.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...