vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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
Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 01.07.17 17:18

Hallo, ich bin neu hier und möchte Euch zuerst alle begrüßen.

ich möchte aus einem Visual Basic 6 Projekt, wenn ich auf einen Button klicke, eine Access Datenbank mit einem bestimmten Datensatz öffnen.

Wenn ich nur die Datenbank öffnen will schreibe ich:

Dim stappname As String
stappname = Chr$(34) & "C:\Programme\Microsoft Office\OFFICE11\MSACCESS.EXE" &
Chr$(34) & " " & _
Chr$(34) & "Z:\mdb\" & "DIL-PKW.mdb" & Chr$(34)
Shell stappname, 1

Welche Code muss ich einfügen, bzw. neu schreiben damit ein bestimmter Datensatz geöffnet wird?

Über Hilfe würde ich mich freuen.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 03.07.17 00:05

Tolles Forum,
keine Antworten
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Franki
Datum: 12.07.17 03:57

Hallo,

du hast schon recht, die Foren sind toll.

Dass du keine Antwort auf deine Frage bekommen hast liegt vermutlich daran, dass das was du machen möchtest nicht üblich ist und deswegen auch niemand eine konkrete Hilfestellung geben kann.

Aus VB6 heraus kannst du natürlich *.mdb Dateien ansprechen, auch mit konkreten Datensätzen aus einer Tabelle. Dafür kannst du ADO/DAO nutzen.

Auch die Office Automatisierung funktioniert aus VB6 heraus, das wäre ein anderer Weg.

Aber einfach die DB per Shell aufzurufen und dann auf einen konkreten Datensatz zugreifen zu wollen macht eigentlich niemand. (Ich selbst weiß auch nicht, ob das überhaupt geht weil ich es nie benötigt habe, da es halt bessere Wege gibt)

Warum verwendest du nicht die üblichen Mechanismen? Dann könnte dir auch mit Sicherheit jemand helfen.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: effeff
Datum: 12.07.17 14:14

Du öffnest nicht die Access-Datenbank, sondern Du öffnest Access und lässt Dir die entsprechende Access-Datenbankdatei anzeigen.

Normalerweise wäre der "richtige" Weg: Das VB6-Programm benötigt Daten aus der Datenbankdatei. Mittels eines Treibers wird Verbindung dorthin aufgenommen, mittels einer Abfrage werden die Daten ausgelesen und in dem VB6-Programm dannangezeigt bzw. manipuliert. Access bekommmt man damit überhaupt nicht zu sehen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 12.07.17 18:03

Ich habe eine Lösung gefunden.
Das ist zwar nur eine "Krücke", aber es funktioniert.

In einem VB6-Objekt werden in einer Listbox die Inhalte (Zahlen) eines Textfeldes aller Datensätze angezeigt. Mein Ziel war es, bei Doppelklick auf einen Eintrag des Listfeldes den dazugehörigen Datensatz einer Access Datenbank aufzurufen, bzw. anzuzeigen.

Wenn jetzt auf einen Eintrag der Listbox doppelgeklickt wird, wird die Zwischenablage geleert und der Wert (die Zahl aus der Listbox) in die Zwischenablage kopiert. Danach wird die Datenbank geöffnet und ein Makro gestartet.

Dim stappname As String
stappname = Chr$(34) & "C:\Programme\Microsoft Office\OFFICE11\MSACCESS.EXE" & _
Chr$(34) & " " & _
Chr$(34) & "Z:\mdb\" & "DIL-PKW.mdb" & Chr$(34) & "/x Makro2"
Shell stappname, 1

Dieses Makro öffnet eine Funktion:
Es wird der Inhalt der Zwischenablage im Kombinationsfeld angezeigt, darin befinden sich ebenfalls alle Zahlen dieses bestimmten Textfeldes. Bei Klick auf einen Eintrag wird zu diesem Datensatz gesprungen.

Danach wird ein RETURN simuliert, es wird zum gewünschten Datensatz gesprungen.

Ich würde natürlich eine elegantere Lösung bevorzugen und hoffe noch auf einen entscheidenen Hinweis.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 12.07.17 18:11

Du hast meine Frage nicht richtig gelesen oder verstanden.

Ich möchte nicht, dass die Datenbank in Visual Basic angezeigt wird, die Datenbank sollte geöffnet und ein bestimmter Datensatz angezeigt werden.

Ich habe jetzt eine Lösung gefunden:

Das ist zwar nur eine "Krücke", aber es funktioniert.

In einem VB6-Objekt werden in einer Listbox die Inhalte (Zahlen) eines Textfeldes aller Datensätze einer von mir angelegten Datenbank angezeigt. Mein Ziel war es, bei Doppelklick auf einen Eintrag des Listfeldes den dazugehörigen Datensatz einer Access Datenbank aufzurufen, bzw. anzuzeigen.

Wenn jetzt auf einen Eintrag der Listbox doppelgeklickt wird, wird die Zwischenablage geleert und der Wert (die Zahl aus der Listbox) in die Zwischenablage kopiert. Danach wird die Datenbank geöffnet und ein Makro gestartet.

Dim stappname As String
stappname = Chr$(34) & "C:\Programme\Microsoft Office\OFFICE11\MSACCESS.EXE" & _
Chr$(34) & " " & _
Chr$(34) & "Z:\mdb\" & "DIL-PKW.mdb" & Chr$(34) & "/x Makro2"
Shell stappname, 1

Dieses Makro öffnet eine Funktion:

Es wird der Inhalt der Zwischenablage in ein Kombinationsfeld zum Suchen geschrieben, darin befinden sich ebenfalls alle Zahlen eines bestimmten Textfeldes. Bei Klick auf einen Eintrag wird zu diesem Datensatz gesprungen.

Danach wird ein RETURN simuliert, es wird zum gewünschten Datensatz gesprungen.

Ich würde natürlich eine elegantere Lösung bevorzugen und hoffe noch auf einen entscheidenen Hinweis.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Franki
Datum: 13.07.17 03:25

Hallo,
Zitat:


Ich möchte nicht, dass die Datenbank in Visual Basic
angezeigt wird, die Datenbank sollte geöffnet und ein
bestimmter Datensatz angezeigt werden.


Mir scheint, dass du da ein Verständnisproblem bzw. ein Definitionsproblem in der Terminologie hast. Was genau bezeichnest du denn als Datenbank? Meinst du da die *.mdb Datei oder Access mit einer geöffneten Datei?

Denn genau das was du möchtest hat effeff ja beschrieben.

Zitat:


Ich habe jetzt eine Lösung gefunden:
Das ist zwar nur eine Krücke, aber es funktioniert.


In der Tat, das geht wesentlich einfacher.
Aber du schreibst:

Zitat:


In einem VB6-Objekt werden in einer Listbox die Inhalte
(Zahlen) eines Textfeldes aller Datensätze einer von mir
angelegten Datenbank angezeigt.


Was meinst du hier mir dem Begriff Datenbank? Wenn das die besagte Access bzw. *.mdb Datei ist, dann hast du die Verbindung ja schon, also über ein Select Statement die Inhalte(Zahlen) ausgelesen... ???

Zwischenablage, brauchst du nicht, Makros auch nicht (die gibt es nur in Access VBA und nicht in VB6) Und um dein Vorhaben zu realisieren brauchst du euch kein Access auf dem Rechner auf dem dein Programm ausgeführt wird.

Schau dir mal diese Seite hier an, da werden die Grundlagen erklärt:

https://www.activevb.de/tutorials/tut_ado_db/adodb.html


Zitat:


Ich würde natürlich eine elegantere Lösung bevorzugen und
hoffe noch auf einen entscheidenen Hinweis.


Wie gesagt, deine Vorgehensweise ist absolut unüblich. Du könntest das ja genauso gut innerhalb von Access mit einem Formular (VBA Code usw.) machen und bräuchtest dafür gar kein VB6.

Schau dir den Link mal, vielleicht wird dann einiges klarer.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 13.07.17 17:24

Hallo Franki,

ich habe eine Datenbank (.mdb), in der alle vorhandenen PKWs eines Autohauses eingegeben werden. Jeder Datensatz ist also ein PKW.

Es gibt natürlich mehrere Textfelder (Farbe, Hubraum, Kw/PS u.s.w.). In einem Textfeld wird die GW-Nummer (das sind die letzten 6 Stellen der Fahrgestellnummer) eingegeben.

Dann gibt es ein ungebundenes Kombinationsfeld, in diesem werden alle GW-Nummern aufgelistet. Wenn nun auf eine GW-Nummer geklickt wird, wird zu diesem Datensatz gesprungen. Es kann aber auch eine GW-Nummer eingegeben werden; nach Klick auf RETURN wird ebenfalls zu diesem Datensatz gesprungen.

Jetzt habe ich mit VB6 ein kleines Programm geschrieben, in dem sämtliche relevanten Daten angezeigt werden. Das ist für die Buchhaltung sehr hilfreich.

Ein Textfeld zeigt die Anzahl der PKWs an, die bei der BDK (Bank Deutsches Kraftfahrzeuggewerbes) finanziert wurden (wird in der Datenbank eingegeben).

Ein anderes zeigt die Anzahl der PKWs an, die bei der Santanderbank Bank finanziert wurden (wird in der Datenbank eingegeben).

In einer Listbox werden sämtliche GW-Nummern der Datenbank angezeigt. Jede GW-Nummer entspricht einen Datensatz. Mein Ziel war es, dass bei Doppelklick auf eine GW-Nummer die Datenbank geöffnet und zum Datensatz mit der angeklickten GW-Nummer gesprungen, also angezeigt wird.

Ich hoffe, ich habe mein Vorhaben einigermaßen erklären können und bedanke mich für Dein Interesse.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Franki
Datum: 14.07.17 02:07

Hallo,

Zitat:


ich habe eine Datenbank (.mdb), in der alle vorhandenen PKWs
eines Autohauses eingegeben werden.
...
Dann gibt es ein ungebundenes Kombinationsfeld, in diesem
werden alle GW-Nummern aufgelistet. Wenn nun auf eine
GW-Nummer geklickt wird, wird zu diesem Datensatz gesprungen.


Bis hierhin alles in Access?

Zitat:


Jetzt habe ich mit VB6 ein kleines Programm geschrieben, in
dem sämtliche relevanten Daten angezeigt werden. Das ist für
die Buchhaltung sehr hilfreich.


Und ab hier alles in VB6?

Zitat:


In einer Listbox werden sämtliche GW-Nummern der Datenbank
angezeigt. Jede GW-Nummer entspricht einen Datensatz. Mein
Ziel war es, dass bei Doppelklick auf eine GW-Nummer die
Datenbank geöffnet und zum Datensatz mit der angeklickten
GW-Nummer gesprungen, also angezeigt wird.


Wie hast du denn in VB6 die Daten für die Listbox aus der DB ausgelesen? Dafür mußt du doch sowieso schon aus VB6 die DB angezapft haben.

Und was soll denn mit dem Doppelklick erreicht werden? Soll sich da aus deinem VB6 Programm der Datensatz mit der entsprechenden GW-Nummer öffnen oder soll da Access gestartet werden? Diesen Mischmasch habe ich noch nicht so richtig verstanden.

Aus VB6 kannst du sinngemäß ja mit einem einfachen SQL Statement auf den Datensatz zugreifen. Fiktives Beispiel:

Select deine Felder from Fahrzeuge Where GW ='" & Auswertung des Doppelklicks & "' "

Bei Treffer halt die Daten anzeigen im VB6 Programm, wenn Datensatz nicht vorhanden halt eine Fehlermeldung anzeigen.

Gruß und weiterhin viel Erfolg,
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: emaNoN
Datum: 14.07.17 09:39

Sorry Dago,
aber solch einen Blödsinn hab ich schon lange nicht mehr gesehen.
Welchen praktischen Nutzen soll es haben, diesen einen Datensatz unbedingt mit Access zu öffnen statt ihn einfach in einer VB-Form anzuzeigen? Da wird umständlich mit Zwischenablage hantiert, irgendwelche RETURNs simuliert und der User sitzt vor seinem PC und wartet bis sich endlich Access geöffnet und diesen Datensatz gefunden hat, der ja unter VB6 schon längst zur Verfügung steht und nur noch angezeigt werden muß.

Beitrag wurde zuletzt am 14.07.17 um 09:48:29 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 14.07.17 18:22

@Franki, @emaNoN,

ich glaube,ich muss mal etwas klarstellen:

Die Access-Datenbank habe ich bereits vor ca. 15 Jahren erstellt, sie wurde im Laufe der Zeit immer erneuert und viele Funktionen kamen hinzu.

Auf dem Hauptformular befindet sich auch ein Button, der bei Klick ein anderes Fprmular öffnet, das ein Listenfeld enthält. In diesem Listenfeld werden alle PKWS angezeigt, die 10 oder weniger Monate TÜV haben. Bei Doppelklick auf einen Eintrag wird wieder das Hauptformular mit diesem Datensatz geöffnet:

Private Sub ListeTA_DblClick(Cancel As Integer)
Dim strKrit As String
    strKrit = "Adressenlistennr =" & Me!ListeTA
    DoCmd.OpenForm "PKW", , , strKrit
    DoCmd.Close acForm, "TÜV"
End Sub
Ein Kombinationsfeld im Hauptformular liest die GW-Nummern sämtlicher Datensätze aus und werden beim Öffnen angezeigt. Ein Klick auf einen Eintrag öffnet den entsprechenden Datensatz:

Private Sub Kombinationsfeld52_AfterUpdate()
    On Error Resume Next
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[AdressenlistenNr] = " & Str(Nz(Me![Kombinationsfeld52], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Ich habe vergessen mitzuteilen, dass ich die Datenbank in FrontEnd und BackEnd aufgeteilt habe.

---------------------Visual Basic 6-----------------------------------------------------------

Vor einigen Wochen fragten mich die Damen aus der Buchhaltung, ob ich ein Programm schreiben könnte, das alle relevanten PKW-Daten anzeigt. Dieses Programm schrieb ich in VB6.

Es werden u.a. auch alle GW-Nummern der einzelnen Datensätze der Datenbank angezeigt:

Set conn = New ADODB.Connection
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      "Z:\mdb\db\dil-pkw_Back.mdb"
 
Dim rs As ADODB.Recordset
On Error Resume Next
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM PKW", conn, adOpenStatic, adLockPessimistic
    rs.MoveFirst
    Do While Not rs.EOF
 
Me.List2.AddItem rs.Fields("Angebotsnummer").Value
Natürlich mit Loop, rs.movenext und rs.close

Wenn jetzt auf einen Eintrag doppelgeklickt wird, öffnet sich die Datenbank mit diesem Datensatz, und zwar in ca. 1/2 Sekunde. Ich habe es leider nicht elegant hinbekommen, darun dieser Umweg über Makro und Funktion in der Datenbank.
Ich würde mich freuen, wenn Ihr mir eine bessere Lösung vorschlagen könntet.

Der Hintergrund:

Wenn das Programm geöffnet ist (es ist fast immer geöffnet) und ein Interessent ruft an und möchte sich über einen PKW informieren, den er im Internet gesehen hat, nennt er die GW-Nummer und es braucht nur auf diese GW-Nummer doppelgeklickt zu werden und es öffnet sich die Datenbank mit diesem Datensatz. Dieser Datensatz enthält sämtliche PKW relevanten Daten. Auch eingescannte Dokumente wie Reparaturberichte, Brief, Schein, TÜV etc. können abgerufen werden.

@emaNoN
Ich kann hier keinen Blödsinn erkennen

@Franki
Mischmasch war sicher nur meine Schreibweise

Beitrag wurde zuletzt am 14.07.17 um 18:33:27 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Franki
Datum: 15.07.17 02:03

Hallo,
Zitat:



ich glaube,ich muss mal etwas klarstellen:

Die Access-Datenbank habe ich bereits vor ca. 15 Jahren
erstellt, sie wurde im Laufe der Zeit immer erneuert und
viele Funktionen kamen hinzu.


Das ist ja übliche Praxis und bei den meisten meiner Programme auch so, dass sie sich im Laufe der Jahre wachsen bzw. sich verändern/erweitern.

Zitat:


Ich habe vergessen mitzuteilen, dass ich die Datenbank in
FrontEnd und BackEnd aufgeteilt habe.


Das spielt in Bezug auf die Tabellen in deiner mdb keine wesentliche Rolle.

Zitat:


---------Visual Basic6--------

Vor einigen Wochen fragten mich die Damen aus der
Buchhaltung, ob ich ein Programm schreiben könnte, das alle
relevanten PKW-Daten anzeigt. Dieses Programm schrieb ich in
VB6.

Wenn das Programm geöffnet ist (es ist fast immer geöffnet)
und ein Interessent ruft an und möchte sich über einen PKW
informieren, den er im Internet gesehen hat, nennt er die
GW-Nummer und es braucht nur auf diese GW-Nummer
doppelgeklickt zu werden


Und genau hier kannst du in VB6 bleiben, du ermittelst die GW Nummer des Doppelklicks (oder der Eingabe) und setzt ein Select GW Nummer... Statement ab. Dann bekommst du genau diesen einen Datensatz zurück und die Buchhaltung hat alle relevanten Daten für den Interesenten.

Zitat:


und es öffnet sich die Datenbank mit
diesem Datensatz. Dieser Datensatz enthält sämtliche PKW
relevanten Daten. Auch eingescannte Dokumente wie
Reparaturberichte, Brief, Schein, TÜV etc. können abgerufen
werden.


Das alles sind ja weiter Eigenschaften eines Datensatzes die getrennt abgerufen werden müssen. Wenn du diese Funktionalität schon hast, dann ist es wohl besser du bleibst dabei, denn sonst müsstest du das alles auch in dein VB6 Programm integrieren. Alles ist machbar, aber wenn du das schon hast, lohnt es sich nicht das nachzubauen in VB6

Ich glaube jetzt erst habe ich verstanden was du da eigentlich machst.
Spontan würde mir dazu nur einfallen, alles auf VB6 (oder besser gleicht .NET umzubauen, dann bist du zukunftsicher und brauchst nicht zwischen verschiedenen Anwendungen zu wechseln.

Deine mdb Datei könnte beibehalten werden.

Zitat:


@emaNoN
Ich kann hier keinen Blödsinn erkennen


Na ja, das mit Zwischenablage, simulierten Return usw. hatte ich ja auch schon kritisiert.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Franki
Datum: 15.07.17 02:07

Hallo,

manchmal ist der Sinn eines Vorhabens aus der Fragestellung nicht gleich erkennbar, so ging es auch mir. Aber durch die Diskussionen kann es schon klar werden was der Fragesteller beabsichtigt und warum. Lies dir das mal komplett durch, vielleicht hast du auch dann auch noch Vorschläge...

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: emaNoN
Datum: 15.07.17 11:15

Je nachdem, wie groß dieses Access-Projekt ist, macht es natürlich unter Umständen wenig Sinn alles in VB6 oder besser .net nachzubauen. Von daher würde ich ganz pragmatisch herangehen und diese Listbox mit den Nummern sowie einen Button in die Access-Anwendung einbauen. Entweder auf den wichtigsten Formularen platziert (oder auf allen), oder ein zusätzliches Formular einbauen, das ständig irgendwo angezeigt wird (meine letzte Access-Anwendung hab ich um die Jahrtausendwende gebaut, daher weiß ich nicht genau, ob man das so machen kann). Ist doch im Endeffekt egal, ob die Access-Anwendung den ganzen Tag geöffnet ist oder das VB-Programm.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 15.07.17 15:57

Hallo Frank,

im VB6-Programm werden viele Daten angezeigt, z.B. Rechnungsnummern, Bestand, Werkstattrechnungen, alter Bestand, alte Daten etc. und die entsprechenden Programme, bzw. Dokumente können dann auch durch Klick oder Doppelklick geöffnet werden.

Genauso verhält es sich mit der Anzeige aller Datensätze (GW-Nummern) in einer Listbox. Bei Doppelklick auf einen Eintrag wird nun die Datenbank mit Access geöffnet und der entsprechende Datensatz angezeigt und kann, falls gewünscht, bearbeitet werden. Da ich es nicht mit einem Befehl aus VB6 heraus geschafft hatte, einen bestimmten Datensatz zu öffnen, dieser Umweg ("Krücke") über Access.

Zitat:

Und genau hier kannst du in VB6 bleiben, du ermittelst die GW Nummer des Doppelklicks (oder der Eingabe) und setzt ein Select GW Nummer... Statement ab. Dann bekommst du genau diesen einen Datensatz zurück und die Buchhaltung hat alle relevanten Daten für den Interesenten.


Kann der Datensatz, wenn er in VB6 angezeigt wird, bearbeitet werden?

So wie es jetzt ist, funktioniert zwar alles prima uind schnell, nur der Umweg über Makro u.s.w. gefällt mir nicht.

Ich bedanke mich jedoch für Dein Interesse und Deine Hilfestellungen und wünsche ein schönes Restwochenende.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 15.07.17 16:20

Hallo emaNoN,

Zitat:

Ist doch im Endeffekt egal, ob die
Access-Anwendung den ganzen Tag geöffnet ist oder das
VB-Programm.


Nein, das VB6-Programm enthält wesentlich mehr Informationen als die Datenbank (siehe mein Post an Franki).

Vereinfacht könnte man sagen:

Die Datenbank enthält alle PKW-spezifischen Daten.
Das VB6-Programm alle relevanten Daten des Unternehmens.

Eine Form in die Datenbank einzubauen wäre eine Möglichkeit, allerdings haben alle Angestellten Zugriff auf diese Datenbank und die Daten, die im VB6-Programm angezeigt werden, sollen nur von der Buchhaltung eingesehen werden können, darum ist sie auch mit einem Passwort versehen.

Jetzt könntest Du sagen, ich müsste Rechte vergeben. Stimmt, aber ich möchte nicht, dass sich die Datenbank unnötig aufbläht, da sie auf einer NAS-Festplatte liegt und von zwei Standorten genutzt wird.
Der Zugriff vom Hauptstandort (dort liegt die NAS-Festplatte) ist schnell, vom zweiten Standort wird über eine VPN Verbindung auf die NAS-Festplatte zugegriffen und ist dementsprechend langsam.

So wie es jetzt ist, funktioniert alles und es ist schnell, nur die "Krücke" gefällt mir nicht.

Ich bedanke mich auch bei Dir und wünsche ein schönes Restwochenende.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: emaNoN
Datum: 15.07.17 17:15

Hallo Dagobert,
da du gefragt hast ob man den Datensatz unter VB6 auch bearbeiten kann, vermute ich, ADO ist für dich ein Fremdwort. Was mich zu der Frage bringt:
Woher kommen die Daten, die im VB Programm angezeigt werden? Und wie werden diese gepflegt?
Weiterhin wäre interessant, wie groß die Fahrzeugdatenbank ist (Anzahl Tabellen / Felder). Sollte es sich dabei bloß um ein paar wenige Tabellen handeln, würde ich doch in Erwägung ziehen das Access Front-End durch VB zu ersetzen. Ich habe auch so ein altes Projekt (> 15 Jahre), das einmal als Access-Anwendung entstanden ist. Das war auch durchaus zum Bearbeiten einiger Datensätze geeignet. Als aber die Aufgabenstellung war meherere 100.000 Datensätze am Stück zu verarbeiten mußte ich feststellen, daß dieses unter VB6 mittels ADO bis zu Faktor 10 performanter war.
Was das Aufblähen der DB anbelangt: Eine kleine Mitarbeitertabelle mit Namen, eindeutiger Pers.Nr. und einem Schlüssel für bestimmte Zugriffsrechte (damit kannst du erreichen, daß z. B. bestimmte Programmpunkte gar nicht aufgerufen werden können) blähen die DB kaum auf, ihr seid doch nicht VW mit Zigtausend Mitarbeitern. Und selbst das wäre kein Problem, da ja nicht die gesamte DB auf den Remote-Rechner übertragen wird sondern nur der Datensatz der per ADO /SQL-Abfrage in Frage kommt. D. h. ein SELECT * FROM Fahzeuge WHERE GWNr = 12345 überträgt nur den einen Datensatz bei dem die Nummer paßt über die VPN-Leitung.
Falls du noch nicht die Lust verloren hast: Ich wollte nicht nur meckern und es sollte sich doch mit vereinten Kräften eine sinnvolle Lösung finden lassen (Darum geht's doch in diesem Forum, oder?).
Euch auch ein schönes Wochende.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Franki
Datum: 15.07.17 23:15

Hallo,
Zitat:

Zitat:

Und genau hier kannst du in VB6 bleiben, du ermittelst
die GW Nummer des Doppelklicks (oder der Eingabe) und setzt
ein Select GW Nummer... Statement ab. Dann bekommst du genau
diesen einen Datensatz zurück und die Buchhaltung hat alle
relevanten Daten für den Interesenten.

Kann der Datensatz, wenn er in VB6 angezeigt wird, bearbeitet
werden?

Ja selbstverständlich kann er das. Unter VB6 kannst du alles machen was du unter Access auch kannst. Also Datensätze anlegen, bestehende einlesen, ändern/bearbeiten, löschen usw. Du könntest bei Bedarf sogar neue Tabellen innerhalb der DB anlegen mit Feldern/Feldtypen usw.

Was du allerdings beachten mußt bei einer Mehrbenutzerumgebung ist, dass sich die User nicht gegenseitig ins Gehege kommen. Ob das bei dir passieren kann weiß ich nicht, aber wenn dem so sein sollte, dann gibt es auch da Möglichkeiten.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Franki
Datum: 15.07.17 23:26

Hallo,

also wie ich das sehe, ist die Trennung schon sinnvoll bei dir.
Wie schon in meiner anderen Antwort gesagt, kannst du auch aus VB6 heraus beliebig auf die DB zugreifen, auch Datensätze ändern usw.

Es stellt sich aber wie schon angedeutet, die Frage, ob es Konflikte geben kann zwischen den zwei Standorten bzw. im Mehrbenutzerbetrieb.

Beispiel: Standort A hat KFZ 12345 in Access geöffnet und sieht die Fahrzeugdaten. Jetzt kommt VB6 (Buchhaltung) und ändert die Daten zu diesem Fahrzeug, speichert sie und alles ist gut. aber in Access bei Standort A hat sich nichts getan, der Datensatz müsste neu eingelesen werden. Usw. usw. da mußt du schon berücksichtigen, ob es da Konflikte geben könnte oder nicht.

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 16.07.17 16:21

Hallo emaNoN,

ich möchte zuerst einmal Deine Fragen beantworten.

Set conn = New ADODB.Connection
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      "Z:\mdb\db\dil-pkw_Back.mdb"   
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
On Error Resume Next
rs.Open "SELECT * FROM PKW", conn, adOpenStatic, adLockPessimistic
    rs.MoveFirst
    Do While Not rs.EOF
 
Me.List2.AddItem rs.Fields("Angebotsnummer").Value'hier wird eine Listbox
                                                  'mit allen GW-Nummern
                                                  'der Datenbank gefüllt
 
If CStr(rs.Fields("finanzbdk").Value = -1) Then   'hier wird z.B. die Anzahl
   anzbdk = anzbdk + 1                            'PKWs ermittelt, die bei der
   End If                                         'BDK finanziert wurden
 
rs.MoveNext
    Loop
rs.Close
Was meinst Du mit gepflegt? Im Hauptformular (PKW) wird für jeden PKW, der eingekauft wurde ein neuer Datensatz angelegt und sämtliche relevanten Daten eingegeben. Es werden ca. 40-50 PKWs pro Monat gekauft. Wenn ein PKW verkauft wird, wird dieser Datensatz gelöscht und alle eingescannten Dokumente in einen BackUp-Ordner verschoben.

Die BackEnd wird automatisch stündlich gesichert und kann jederzeit manuell gesichert werden. Außerdem werden Front- und BackEnd täglich abends "komprimiert und repariert".

Die Datenbank hat 9 Formulare, das Hauptformular (PKW) hat 80 Steuerelemente, darunter ca. 20 Labels, die Tabelle für das Hauptformular (PKW) hat 105 Spalten. Es gibt 7 Tabellen, 10 Abfragen, 6 Berichte, 14 Makros und 3 Module.

ADO/DAO sind für mich keine Fremdwörter, ich muss aber gestehen, dass ich mich damit noch nicht intensiv beschäftig habe.

Selbstverständlich habe ich die Lust noch nicht verloren, allerdings funktioniert alles zu meiner Zufriedenheit. Ich hatte lediglich die Frage, wie ich aus VB heraus eine Access Datenbank mit einem bestimmten DS öffnen kann (siehe mein Anfangsposting). Die Lösung, die ich gefunden habe (Makro und Funktion) funktioniert zwar bestens, befriedigt mich aber nicht, da "Krücke".

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

Re: Access aus visual basic mit bestimmten Datensatz öffnen 
Autor: Dagobert2017
Datum: 16.07.17 16:32

Hallo Frank,

Du hast völlig recht, wenn zur selben Zeit 2 Mitarbeiter den selben Datensatz nicht nur öffnen, sondern auch bearbeiten wollen, kommt es zu einem Konflikt. Dies kam in den letzten 15 Jahren allerdings nur 5-10 mal vor und kann vernachlässigt werden. Ich habe diesbezüglich einige Mitarbeiter angewiesen, was sie dann machen müssen, wenn ich nicht da bin.

Ich habe mich entschlossen, es so zu belassen und die Lösung mit dem Makro so hinzunehmen. Es funktioniert ja und ist schnell. Vielleicht finde ich in der Zukunft eine elegantere Lösung.
Die komplette Datenbank in VB zu übernehmen wäre zu umfangreich (siehe mein Posting von heute an emaNoN.

Gruß Edgar
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