Zum Inhalt springen

Access & Vb


1stL@DY

Empfohlene Beiträge

kann mir jemand vielleicht Tipps geben wie ich Daten aus einer ACCESS DB in eine ListBox bekomme ???

Also ich bin dabei eine SW zu entwickeln in VB welches auf Daten in ACCESS zugreifen SOLL, jedoch kriege ich das irgendwie nicht hin !!!

mennnoooooo ...

also kann mir da jemand helfen ???

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn ich ehrlich sein soll kriege ich das überhaupt gar nicht hin !!!

eigentlich wollte ich alles unter VBA programmieren, aber das hab ich nicht hinbekommen und ich sollte es später als exe. laufen lassen, daher jetzt VB .

ich bräuchte den Quelltext dazu ... wie man das in etwa macht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, was VB & Access angeht, da führen eigentlich viele Wege nach Rom.

Ich schrieb dir mal auf wie ich dass normalerweise machen würde, die Syntax muss du aber nicht unbedingt eins zu eins übernehmen, die kann man auch ganz leicht variieren.

Ich arbeite normalerweise mit ADO, das ist eigentlich dass beste, finde ich. Um damit arbeiten zu können, mußt du erstmal unter Projekte und Verweise und dort die Microsoft ActiveX Data Objekts 2.5 einbinden.

Also, für die Verbindung in die Datenbank brauchst du erstmal ein Connection-Objekt, dass deklarierst du am besten Public, denn das brauchst du sehr oft.

Syntax :

Public NameVerbindung as new ADODB.Connection.

Anschließend rufst du dass Form_load Ereignis auf und initialisiert die Verbindung da.

Syntax :

NameVerbindung.open "Provider=Microsoft.jet.oledb.4.0.;Data Source=C:\PFADNAME\DATEINAME.mdb"

Und schon bist du in der Datenbank drin. Um was auslesen zu können brauchst du noch ein Recordset-Objekt, das ist ein Zeiger auf die Tabelle innerhalb der Datenbank. Den deklarierst du auch als Public.

Syntax :

Public Recordsetname as New ADOB.Recordset.

Dannach mußt du das Recordset noch initalisieren, das machst du am besten in dem Ereignis, das die Daten braucht.

Syntax :

rstrecordset.Open "TABELLENNAME", NAMEVERBINDUNG, adOpenDynamic, adLockOptimistic

Jetzt zeigt dass Recordset auf den ersten Datensatz in der Tabelle die du angegeben hast und ist bereit dir die Daten auszugeben. Das kannst du testen indem eine Messagebox anzeigen läßt die den Wert ausgibt.

Syntax

msgbox Recordsetname!Spaltenname

Achte dabei darauf dass du den Namen des Recordsets und den Namen des Feldes durch ein " ! " trennst. Der Spaltenname muss genau angegeben werden, sonst läuft es nicht.

Dem Recordset kannst du auch SQL-Statemants mitgeben, aber das jetzt erstmal zweitrangig, oder ?

So, dass sollte dir erstmal helfen, mir glühen jetzt nämlich die Finger !!

So long !

Feivel

:D :D :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

nur noch eins ...

wie kann ich denn jetzt die einzelnen Daten in der ListBox ansprechen ???

zB wenn in der ListBox alle Daten aus der DB enthalten sind und ich will über xxx mehr infos haben (per MsgBox) wo gebe ich das an ??? oder wie kann ich xxx ansprechen ???

DANKE DANKE DANKE !!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

genau das kriege ich nicht hin. wie soll denn der code dafür lauten ???

ist es denn auch möglich dass zB Eintrag 4 in der ListBox5 ein MsgBox zugewiesen bekommt und wenn ich auf diesen 4. Eintrag klicke kommt dann diese MsgBox hervor ... wenn ja wie mache ich dass in VB ???

Link zu diesem Kommentar
Auf anderen Seiten teilen

@1stL@DY

Hab da noch mal zwei Fragen:

1. hast Du eigentlich schon mal mit VB gearbeitet ?

2. was hältst Du davon Dir mal nen Buch zur Hand zu nehmen und einmal nachzulesen ?

Hilft mehr, als sich alles von anderen vorkauen zu lassen; ist auch selbstständiger.

Aber gut nun zu Deinem Problem:

Also, den Index des angeklickten DS bekommst Du über die Funktion Listbox.ListIndex. Diese Funktion liefert Dir den Index des DS zurück.

Den Text des ListBoxeintrages bekommst Du über die Funktion ListBox.List(Index).

Die Anzahl der Einträge in Deiner Listbox bekommst Du über ListBox.ListCount.

In all diesen Fällen musst Du die Bezeichnung Listbox mit der Bezeichnung Deiner Listbox ersetzen.

Bsp.

Zaehler as Integer

Anzahl as Integer

Zaehler = 0

Anzahl = 0

Anzahl = Listbox.ListCount

For Zaehler = 0 to Anzahl - 1

if Listbox.List(Zaehler) = "blablabla"

...

else

...

end if

Next Zaehler

Hoffe das hilft Dir erstmal

Gruss TWI

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Den Weg wurde ich nicht nehmen, weil das saumäßig auf die Performance geht, was eigentlich nciht sein muss.

Bilde dir ein Collection-Objekt und in der Moment wo du dir in eine "For-Schleife" die Daten in dem Combo-Box einträgst, kannst du auch kannst du auch die dazugehörige ID in diesem Collection-Objekt speichern.

Danach kannst du bezugnehmen auf aktuelle Index des Combo-Boxes auch auf die zugehörige ID-Nummer in dem Collection-Objekt zugreifen und die ID abfragen.

Angenommen, benutzer wählt ein Eintrag in dem Combobox.

Index ist N.

So suchst du dann in deinem Collection-Objekt. Nach dem Collection-Eintrag INDEX N!

Ob es nun n+1 oder n-1 ist weiss ich im kopf nicht, habs schon lagn nicht mehr gemacht. Ausprobieren.

Wichtig dabei, ist dass die Reihenfolge sich während der Laufzeit nicht ändert!!! Wenn ja, dann wäre wahrscheinlich die Schleife die einzige Möglichkeit.? Ich denke, aber dass es sowieso kein Sinn macht die Reihenfolge im Nachhinein zu ändern! Denn man holt sich die Daten sortiert aus der Datenbank und trägt sie in ein Combo-Box ein.

Und anhand diese ID kanns tdu die die restliche Infos aus der Datenbank holen. Und wenn du die Verbindung zur DAtenbank nicht mehr haben willst, (aus performancegründen) dann kannst du dir ja dein Recordset behalten und nach diese ID-Nummer dann später filtern. also poRS.Filter = "ID_Nr = '112'". so in etwa.

Das entlastet nicht nur deine Applikation. Ist auch technisch viel sauberer als wenn du in irgendwelche Schleifen, nach datensuchst. Und selbst dann, wenn du wirklich gezwungen bist, dein Recordset nach einem Bestimmten Datensatz zu durchsuchen, kannst du ja die Filter-Eigenschaft von Recordset verwenden. Ist schneller und sauberer.

poRS.Filter = "" setzt dann auch dein Filter wieder zurück und kriegst danach alle Datensätze angezeigt.

MfG

Blear

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...