vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Re: VB6 Datei im LAN löschen 
Autor: wb-soft
Datum: 15.12.11 17:12

Hi!

Einfach
adoConnect.Close
"UPDATE tabBereich SET ..."
In diesem Fall brauchst du kein Recordset.
Das geht mit
adoConnect.Execute
mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

VB6 Datei im LAN löschen 
Autor: Wini
Datum: 15.12.11 08:04

Hallo zusammen,
ich habe eine Anwendung die als Einzelplatz läuft.
Für die Umstellung auf Mehrplatz habe ich keine Erfahrung im Umgang mit einer DB auf dem LAN.
Die DB erstellt automatisch eine Verbindung zu einer Datei mit der Extention „ldb“.

1.Frage: Im Fehlerfall (LAN-Verbindung ist unterbrochen) bleibt diese Datei bestehen. Nach einem Neustart lässt sich die DB nicht mehr öffnen.
Besteht eine Möglichkeit, damit diese Datei automatisch gelöscht wird?

Wenn Nein,
2.Frage:
Ich muß diese Datei löschen. Das FileSystemObject ist nicht Netzwerkfähig (nach meinem Wissen).
Gibt es eine andere Lösung für VB6?

Sollte dies auch nicht der Fall sein, dann habe ich ein echtes Problem.

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: wb-soft
Datum: 15.12.11 09:39

Hi!

So ganz verstehe ich dein Problem nicht.

Wenn die Verbindung zur DB sehr fehleranfällig ist,
einfach für jede Transaktion neu öffnen und schließen.

Löschen sollte im LAN kein Problem sein, sollte aber kaum notwendig sein.

Nach einem Neustart von was läßt sich die DB nicht öffnen?


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Wini
Datum: 15.12.11 10:18

Hallo
Vielen Dank für die Antwort.

Transaktion:
Was verstehst du unter einer Transaktion bei VB6?

Neustart:
Lag ein Problem vor, bleibt der Link zur Datei mit dem Namen der Datenbank und der Extion "ldb" bestehen. Die Datenbank lässt sich beim Neustart in diesem Zustand nicht öffnen.

Löschen:
Das Löschen ist für mich ein Problem, wenn ich das per Programm machen möchte.
Den Grund dafür hatte ich beschrieben.

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: wb-soft
Datum: 15.12.11 10:23

Hi!

Unter Transaktion verstehe ich jede Zugriff auf Daten.

Beim Rest verstehe ich das Problem noch immer nicht.
Was wird neu gestartet?


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Wini
Datum: 15.12.11 11:26

Hi,
Transaktion:
d.H. ein SQL-Zugriff, der mit rs.Close und Set rs = Nothing beendet wird?

Rest:
Nach einem DB-Problem (z.B. LAN-Verbindung unterbrochen), wird das Programm neu gestartet. Weil die Verbindungs-Datei von der Access-DB noch vorhanden ist, läßt sich die DB nicht öffnen.

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: wb-soft
Datum: 15.12.11 11:54

Hi!

Das mit Transaktion stimmt ungefähr so.

Wenn die Verbindung jedes Mal auf- und abgebaut wird, sinkt das Fehlerisiko.
Fehlerbehandlung muß trotzdem sein.

Löschen der .ldb wäre keine Lösung. Es könnte ja ein anderer User eine bestehende Verbindung haben.
Die .ldb sollte aber auch nicht stören. Dein Problem muß wo anders liegen.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Wini
Datum: 15.12.11 13:31

Hi,
Vielen Dank für die Antwort.
Transaktion:
Hast du Hinweise wo ich das Thema nachlesen kann?
Wo kann ich ein Beispiel mir besorgen?

Löschen:
Deine Argumente sind eindeutig.
Ich vermute, was mein Problem ist. Ich habe keine saubere Lösung für die Transaktions-Verarbteitung. Damit würden sich meine Problem mit der DB sicherlich reduzieren.

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: wb-soft
Datum: 15.12.11 13:44

Hi!

Im Prinzip must du den Code ja schon haben.
Vermutlich öffnest du die Connection bei Programmstart, und schließt sie erst bei Programmende.

Ändere das dahin, daß die Connection geöffnet wird bevor du ein Recordset öffnest. Wenn das Recordset geschlossen wird, schließe auch die Connection.

Mit einer wiederverwendbaren Prozedur ist das nicht viel mehr Aufwand.

Um Mißverständnisse zu vermeiden:
Mit Transaktion meine ich nicht die mit "BeginTrans" eingeleitete gesicherte Transaktion, sondern einfach das Lesen/Schreiben von Daten.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Wini
Datum: 15.12.11 15:05

Hi,
vielen Dank für deine ausgezeichnete Erklärung über die Transaktion.

>>>>>Ändere das dahin, daß die Connection geöffnet wird bevor du ein Recordset öffnest. Wenn das Recordset geschlossen wird, schließe auch die Connection
Mit einer wiederverwendbaren Prozedur ist das nicht viel mehr Aufwand. <<<<<<<<<

Das war eine sehr WICHTIGE INFO für mich !!!!!

Programm-Code:
Im Moment schließe ich die Connection nicht am Programmende

Ändern:
Ich habe das SKELETON einer TX dargestellt, bis auf den Punkt 5

1 Prüfung der LAN-Verbindung
Mit Bat-Files werden die NET USE Befehle ausgeführt.
Dabei wird der RC in eine Dat-File gespeichert, der ausgwertet wird.
Dies funktioniert recht gut.

2 Die DB-Connection
Set adoConnect = New ADODB.Connection
With adoConnect
If (.State = adStateOpen) Then
pDB_Open = True
GoTo Ende
End If
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = pProgramm_DB_Name
.Properties("Persist Security Info") = False
.Mode = adModeShareDenyNone
.Properties("Jet OLEDBatabase Password") = pE2F_DB_Password
.Open
End With

3 DB-Zugriff
Set adoBereich_RecSet_1 = New ADODB.Recordset
With adoBereich_RecSet_1
.CursorLocation = adUseClient: .CursorType = adOpenKeyset
.LockType = adLockOptimistic
End With
......
......
SQLD = "UPDATE tabBereich SET" ......... usw.
With adoBereich_RecSet_1
If (.State = adStateOpen) Then .Close
.Open SQLD, adoConnect, , , adCmdText
End With
......
...... Ende der Verarbeitung

4 Schließen Record
adoBereich_RecSet_1.Close
set adoBereich_RecSet_1 = Nothing

5 Schließen DB-Connetiom
????? wie geht das ?????????????????

6 Ende der Transaktion

Ist dies soweit ok??

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Wini
Datum: 15.12.11 18:40

Hi,
vielen Dank für deine Antwort.

adoConnect.Execute:
Diesen Recordset verwende ich weiter z.B. beim sevDataGrid für den Display.
Kann ich es so lassen oder bringt es Vorteile?
Mein Program hat 16 Tabellen mit sehr vielen SQL-Ausführungen, dabei sind auch Abfragen über die Inhalte der Tabellen.

Verstehe ich nicht, wenn ich das ansehe:
SQLD = "UPDATE tabBereich SET" ......... usw.
With adoBereich_RecSet_1
If (.State = adStateOpen) Then .Close
.Open SQLD, adoConnect, , , adCmdText
End With
Wie wird mit adoConnect.Execute der SQL-Befehl denn ausgeführt???

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: wb-soft
Datum: 15.12.11 19:35

Hi!

Mit .Execute wird ein SQL-Statement ausgeführt. Das ist für schreibende Zugriffe performanter. Dabei entsteht kein Recordset. Allerdings ist es für Einsteiger
schwerer zu durchblicken.

Schau dir die Hilfe dazu an.

Versuch dir Informationen zum Thema VB6 und Datenbanken zu besorgen.
Mir kommt vor, du hast einige Codeschnipsel gesammmelt und angepaßt,
aber in Wirklichkeit verstehst du den Coden nicht.

Wenn du ein Control an ein Recorset bindest, muß das Recorset im allgemeinen
geöffnet bleiben.
Bessr ist, mit ungebundenen Controls zu arbeiten.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Wini
Datum: 15.12.11 21:24

Hi,
vielen Dank für deine Antwort.

Codeschnipsel gesammelt + aber in Wirklichkeit verstehst du den Code nicht:
Das stimmt was du schreibst!!!!!
Ich habe es aus Büchern und es funktioniert.

Gefunden habe ich diese Quelle:
http://www.activevb.de/tipps/vb6tipps/tipp0439.html
Thema: VB5/6-Tipp 0439: ADO Arbeiten mit ungebundenen Steuerelemente:

Da es mit gebundenen Controls (DataSource und DataField zugewiesen) immer wieder Probleme gibt hat sich im professionellen Gebrauch immer mehr das Arbeiten mit ungebundenen Controls herauskristallisiert.
Bei ungebundenen Steuerelementen ist die Macht des Programmierers größer und es kann nicht zu (häufig vorhandenen) Fehlern in den Datenhandling-Routinen der Controls kommen.
Auch wenn diese Arbeitsweise auf den ersten Blick umständlicher und gewöhnungsbedürftig erscheint wird sie sich spätestens beim erstellen eines sicheren Error-Handlings (hier nicht eingebaut) als übersichtlicher und einfacher zeigen.
Das hier verwendete Beispiel sieht von einem Disconecten des Recordsets ab.

Vor dem Hintergrund von 16.000 LOC bin ich nicht in der Lage diese Umstellung durchzuführen.
Was sind deiner Meinung nach die Auswirkungen, mit denen ich zu rechnen muß???

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: wb-soft
Datum: 15.12.11 22:27

Hi!

Danke, die Seite merke ich mir. Dann brauch ich nur verlinken, und muß nicht selber gegen gebundene Controls wettern.

Welche Probleme konkret auf dich warten kann ich nicht sagen. Ein "beliebtes" Problem ist die Prüfung der Daten, bevor sie in die DB geschrieben werden. Mit der Zahl der User steigt auch die Wahrscheinlichkeit von Problemen mit dem Locking.

Falls in deinem Projekt ADODCs verwendet werden, solltest du die auf jeden Fall eliminieren.

Ansonsten kannst du nur abwarten, weche Probleme auftreten. Diesen Teil dann eben umstellen.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Franki
Datum: 16.12.11 03:32

Hallo Wini,

du hast ja von wb-soft schon sehr ausfürhliche und kompetente Tipps bekommen, allerdings noch eine ergänzende Anmerkungen von mir.

Bei einer Mehrbenutzer Umgebung (gleichzeitiger Zugriff durch mehrere User) auf eine Access *.mdb sind noch ganz andere Sachen zu berücksichtigen, ganz unabhängig von der jetzt extremenen Reduzierung deines *.ldb Problems.

Schau dir mal die Beispielprojekte von Peter Götz an

http://www.gssg.de/vbdb.htm#db_addemomu

AdodemoMU bzw. auch die zweite Version mit 2002.

Es lohnt sich, das mal ausführlich durch zu arbeiten und zu verstehen. Da werden alle relevanten Bereiche gesammelt beschrieben, das ist besser als für jeden Teilbereich irgendwo Codeschnippsel im Web zu suchen die nicht im komplexen Zusammenhang stehen.

Gruß,
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 Datei im LAN löschen 
Autor: Wini
Datum: 16.12.11 11:52

Hallo Frank,
vielen Dank für deine Antwort.

Ausführliche Tipps von dir und wb-soft:
Ja, die habe ich durch eine über alle Maße gehende Beratung erhalten.
Das Schlüsselerlebnis für mich war das Thema der Notwendigkeit, mein Programm Transaktionsorientiert "umzubauen".

Gleichzeitiger Zugriff:
Das kaufe ich dir durchaus ab.

Beispielprojekte ausführlich durch zu arbeiten:
Frank die habe ich mir mal "angeschaut".
Nachdem ich mir den Tipp 0349 von www.activevb.de angeschaut habe, sagte ich zu wb-soft:
Vor dem Hinterund der ca. 16.000 LOC kann ich diese Uumstellung leider nicht durchführen.

Mein Fazit:
Als Einzelplatz läuft das Programm (Backoffice-Anwendung) recht gut.
Der Mehrplatz läuft ja auch, wenn keine Gleichteitigkeit und LAN-Trennung vorliegt.
Mit dem Mehrplatz muß ich die SQl-Aufrufe übers LAN transaktionsorientiert umbauen, so wie wb-soft es mir vorgschlagen hat.

Wenn ich die ersten TX's fertig habe, werde ich ja sehen, wie es dann funktioniert.

Mein Dank:
Nochmals vielen Dank für die profesionelle Beratung, die ich (als Nicht-Profi) durch dich und wb-soft erfahren habe.

Gruß Wini
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel