Mal wieder Access und VB Problem

Elblindo

Mitglied
Code:
Option Explicit
Private CN As New ADODB.Connection 'objektvariable für die Datenbankverbindung
Private RS As New ADODB.Recordset 'objektvariable für die Datensatzgruppe
---------------------------------------------------------------------------------------------------

Private Sub Form_Load()

'Verbindung zur Datenbank herstellen
With CN
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "D:\Programme\Microsoft Visual Studio\Projekte\Tipspiel\Informationen.mdb"
    .Open
End With

'---Datensatz abrufen---
With RS
    .ActiveConnection = CN
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic
    .Source = "Daten"
    .Open
End With

End Sub


---------------------------------------------------------------------------------------------------
'Auswahl
Private Sub cmb_1platz_click()

Dim b As Integer
Dim bild As String

'zu anzeigen wieviele Datensätze vorhanden sind
b = Int(RS.RecordCount)
MsgBox b

'damit sollen die Bilder angezeigt werden
If cmb_1platz.ListIndex + 1 = RS.Fields("nummer") Then bild = RS.Fields("pfad_fahrerbild")
img_1platz.Picture = LoadPicture(bild)

End Sub

Hallo alle zusammen,

ich stehe im moment irgendwie auf dem Schlauch und komme nicht weiter.

Ich bin gerade bei aus einer AccessDatenbank etwas auszulesen aber das noch nicht so wie ich es brauche.

Ich habe eine Datenbank mit 3 Datensätzen (zu Testzwecken später weit mehr).
Nun versuche ich aus einer Spalte den Pfad zu einem Bild auszulesen und dieses soll dann in einem Image
angezeigt werde.
Wenn ich das Tool starte und dann die Commonbox anklicke und den ersten Eintrag wähle zeigt er mir auch das
entsprechende Bild dazu an, wenn ich aber nun auf den Eintrag 2 gehe zeigt er mir das Bild dazu nicht an.
Wenn ich aber wieder auf den ersten Eintrag klicke zeigt er mir das Bild dazu an also ist doch der Weg soweit
richtig oder nicht?
Alles verstanden worauf ich raus möchte?
Hat jemand ne Idee woran das liegen könnte?
 
Du durchläufst das Recordset doch garnicht, sondern vergleichst immer nur die erste Row.
Das Recordset kannst du dir wie eine Tabelle im Cache vorstellen, wo der Zeiger zunächst auf dem ersten Datensatz steht. Den Zeiger musst du dann entsprechend +1 setzen.

Versuchs mal so:
Do while Not RS.EOF
If cmb_1platz.ListIndex + 1 = RS.Fields("nummer") Then bild = RS.Fields("pfad_fahrerbild")
img_1platz.Picture = LoadPicture(bild)
RS.MoveNext
Loop
EOF -> End Of File
 
Mensch ich sag ja auf das einfachste kommste nicht...in diese Richtung habe ich auch schon gedacht aber nicht weit genug :) ;-] .

Danke
 
Hallo ich bin es nochmal,

ich bin nun ein Stück weiter und hänge schon wieder
aber ich denke mal das dürfte wieder kein Problem für euch sein.
Ich habe nun meinen Code soweit zusammen stauchen können das das übrig geblieben ist

Es gibt bestimmt andere,leichtere und auch kürzere Versionen
aber ich bin erstmal froh das es läuft und ich es sogut wie alleine hinbekommen habe. :D
So nun aber zu meiner Sorge.


Hier werden die Funktionen aufgerufen. Davon wird es später noch mehr geben darum auch das w1.
Code:
'Auswahl des 1.Platzes
Private Sub cmb_platz1_click()

'Variable mit zuweisung für den Funktionsaufruf
wahlfahrer = "w1"
'Aufrufen der Funktionen
fahrerbildwahl
autobildwahl
'Freischalten des Infobuttons
cmd_platz1info.Enabled = True
End Sub

Das sind die Funktionen ich habe es nun hinbekommen das ich die "Fahrer" mit einer Variablen
an die DoWhile übergeben kann
Nun habe ich aber noch das Problem das ich das auch (img_fahrerplatz1.Picture) in einer Variablen
aus der Select Case übergeben will aber es funktioniert nicht wie ich mir das dachte.


Code:
'----------------so habe ich es jetzt und das geht auch soweit-----------------------------
Function fahrerbildwahl()
'Abfrage zum anzeigen des Fahrerbild

Select Case wahlfahrer
Case "w1"
    a = CInt(cmb_platz1.ListIndex)
    b = CInt(a) + 1

 Case "w2"
    a = CInt(cmb_platz2.ListIndex)
    b = CInt(a) + 1
    
End Select


Do While Not RS.EOF
If b = RS.Fields("nummer") Then fahrerbild = RS.Fields("pfad_fahrerbild")
img_fahrerplatz1.Picture = LoadPicture(fahrerbild)
RS.MoveNext
Loop
RS.MoveFirst

End Function


'----------------und so dachte ich es mir aber so geht das nicht----
Function fahrerbildwahl()
'Abfrage zum anzeigen des Fahrerbild

Select Case wahlfahrer
Case "w1"
    a = CInt(cmb_platz1.ListIndex)
    b = CInt(a) + 1
    c = img_fahrerplatz1.Picture	<----
 Case "w2"
    a = CInt(cmb_platz2.ListIndex)
    b = CInt(a) + 1
    c = img_fahrerplatz2.Picture	<----
End Select


Do While Not RS.EOF
If b = RS.Fields("nummer") Then fahrerbild = RS.Fields("pfad_fahrerbild")
c = LoadPicture(fahrerbild)		<----
RS.MoveNext
Loop
RS.MoveFirst

End Function
Habe c auch schon versuch als alles mögliche(Image oder String usw.) zu deklarieren aber
irgendwie wollte das alles nicht. Ich denke bestimmt wieder zu einfach(ich mag keine schleifen das wird bestimmt mein Problem sein) :D

Sorry für die Länge aber so kann ich es am besten erklären.
Danke
 
@merlin wie meinst du das jetzt mit dem c?
Ich habe es jetzt so gelöst das ich alle bilder zusammen als eine Gruppe gemacht habe und dann konnte ich sie über den Index ansprechen...
 

Neue Beiträge

Zurück