Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: strolli am Juli 06, 2010, 11:48:41

Titel: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 11:48:41
Hallo,
ich bin Anfänger was Access + VBA angeht.
Ich habe eine Variabel "varid" in der ein Zahl enthalten ist.
Nun möchte ich mit dieser Variablen eine SQL - Statement ausführen und das Ergebnis dann gerne in eine Listbox ausgeben lassen. Folgenden Code habe ich bereitdas


varid = Me.OpenArgs
MsgBox "Firmen_id:" & idvar
sqlstr = "SELECT takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description * FROM takeoff where firmenid =" & varid & ";"

Me.RecordSource = sqlstr


Mit Me.RecordSource müßte ich doch nun das Statement ausführen?!?! Oder ?
Aber wie geht es nun weiter?

Gruß
Strolli
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 11:54:13
Achso, hatte noch vergessen,

strVariable = [Tabelle.Feld]
Me.Liste4.Value = strVariable

Liste4 ist die neue Lsitbox, in der die Werte eingeführt werden sollen.
Aber eigentlich müßte ich doch die Abfrage mit einer While Schleife durch laufen lassen. Wie ist denn bei einer SQL Anweisung dann die Synthax?
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 12:37:21
Hallo,

die Datensatzquelle für eine Listbox ändert man mit

Me.Listboxname.RowSource
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 13:03:53
Ich habe nun folgenden Code eingegeben:

firmenid = Me.OpenArgs
MsgBox "Firmen_id:" & firmenid
 Me!List6.RowSource = "SELECT takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description FROM takeoff where" & firmenid & ";"

Ich bekomme nun allerdings keine Ergebnisse. Muß noch suchen wie ich das SQL - Statement ausführe oder ?
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 13:14:00
Hallo,

Nach dem code noch ein Me.Liste6.Requery
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 13:16:50
sorry, aber dann passiert leider nichts


Dim sqlstr
Dim strVariable


firmenid = Me.OpenArgs

 Me!Liste6.RowSource = "SELECT takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description FROM takeoff where" & firmenid & ";"
 Me.Liste6.Requery
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 13:26:38

Dim intKrit as integer

intKrit = Me.OpenArgs

  Me!Liste6.RowSource = "SELECT takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description FROM takeoff " & _
                                        "where Firmenid = " & intKrit
  Me.Liste6.Requery
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 13:32:55
Ähm, habe ich doch auch so gemacht !
Was ist denn nun bei Dir anders
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 13:35:43
Erstmal die Rückfrage: Gehts?^^
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 13:41:25
nein, leider nicht.
Je mehr ich darüber nachdenke kommt mir die komplexität bei Access zutage.
welche Eigenschaften sollte ich denn hier die Listbox (Liste6)  geben?
Herkunftstyp?
Datensatzherkunft? u.s.w

Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 13:49:16
Ok, nochmal von vorne.
Du übergibst mit Openargs ein Argument. Dieses Argument ist was? Ein string oder eine Zahl?

so würde der Code aussehen wenn dein Argument eine Zahl ist:

Dim strSQL as string
strSQL = "SELECT * FROM TabellenName " & _
"WHERE Kriterienfeld = " & Me.Openargs
Me.Liste6.RowSource = strSQL
Me.Liste6.Requery


Und so wenn dein Kriterium ein string(Buchstaben, zeichen & Zahlenkombination):

Dim strSQL as string
strSQL = "SELECT * FROM TabellenName " & _
"WHERE Kriterienfeld = '" & Me.Openargs & "'"
Me.Liste6.RowSource = strSQL
Me.Liste6.Requery
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 13:56:37
ich übergebe eine Zahl
d.h. folgender Code ist nun enthalten

Dim sqlstr As String

firmenid = Me.OpenArgs
MsgBox "Firmen_id:" & firmenid
' sqlstr
 'Me!Liste6.RowSource =
 strSQL = "SELECT takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description FROM takeoff where" & firmenid
 Me.Liste6.RowSource = strSQL
 Me.Liste6.Requery


Jetzt bekomme ich in der ersten Spalte der Liste6 "select takeoff.id,"
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 14:08:10
Hallo,

du hast meine Codes nicht ordentlich gelsen. In der WHERE-Klausel musst du schon angeben, welches Feld mit firmenid verglichen werden soll.

Dim sqlstr As String

MsgBox "Firmen_id:" & Me.OpenArgs
' sqlstr
  'Me!Liste6.RowSource =
  strSQL = "SELECT takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description FROM takeoff where takeoff.firmenid = " & Me.OpenArgs
  Me.Liste6.RowSource = strSQL
  Me.Liste6.Requery
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 14:16:39
okay sorry, hab ich übersehen.
mußte es aber ein wenig anders machen, da in der Variable bereits "firmenid=" enthalten ist
also habe ich folgende Zeile nun strSQL = "SELECT takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description FROM takeoff where takeoff." & firmenid
Wenn ich mir nun das SQL Statement ausgeben lasse (Msgbox) erhalte ich folgendes
"SELECT  takeoff.id, takeoff.firmenid, takeoff.namen, takeoff.description FROM takeoff where takeoff.firmenid=2"
Das scheint also zu stimmen. Trotzdem bekomme ich kein Ergebnis nur die ersten Wörter der SQL abfrage.
Ich glaube, das SQL Statement wird auf der DB Tabelle gar nicht ausgeführt oder ?

Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 14:26:56
Hallo,

also ist in deinen Openargs, doch ein string enthalten?!
Ich hab dir mal ein Beispiel gebastelt. Damit du das ganze nachvollziehen kannst.





[Anhang gelöscht durch Administrator]
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 14:36:48
habe es nun so geändert das nur noch die id in der Variable ist

anbei mal wie ich die Variable von einem Formular zum anderen gebe

   Dim stLinkCriteria As String
   DoCmd.OpenForm "sel_takeoff", , , , acFormAdd, , Me!kunden
End Sub


Aber es passiert immer noch nichts oder habe ich wieder was übersehen?
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 14:46:32
Wo finde ich denn die Datei?
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 14:52:09
In meinem letzten Post. Ist relativ klein und zwischen Signatur und Antwort zu finden.
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli am Juli 06, 2010, 15:01:18
Also ich sehe nichts! Leider !
Ich wollte mich nun regestrieren und anmelden aber auch das klappt nicht. Echt kacke !!!
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli76 am Juli 06, 2010, 15:06:57
konnte mcih nun anmelden und habe es auch gefunden
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli76 am Juli 06, 2010, 15:08:23
funktioniert aber auch nicht ???
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 15:12:57
Klar^^ du wählst im ersten Formular nen Datensatz aus und im zweiten Formular wird dann im Listenfeld nur dieser Datensatz angezeigt.
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli76 am Juli 06, 2010, 15:18:53
Also ich bin zu blöd für Access. Bei mir funkioniert es nicht. Ich rufe das Formular auf und kann schon nichts eintragen. Da läuft ja schon was falsch.
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli76 am Juli 06, 2010, 15:22:26
also so teilweise bekomme ich es hin. Aber damit funktioniert mein Script leider noch nicht  >:(
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 15:24:40
Also eigentlich ist es doch garnicht so schwer. Im ersten Formular klickst du dich duch die Datensätze und mit dem Button öffnet sich ein zweites Formular, in dem sich das Listenfeld befindet. In diesem Listenfeld würden normalerweise alle Einträge aus der Tabelle1 stehen. Aber da ich im Load-Event die Rowsource über die openargs anpasse, steht dort nur der Datensatz drinne, den man vorher im Formular ausgewählt hatte.
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli76 am Juli 06, 2010, 15:27:47
muß ich eigentlich bei der Erstellung des Listenfeldes bei Datensatzherkunft nicht eine eine where Bedingung hinmachen
du hast dies wie folgt:

SELECT [Tabelle1].[ID], [Tabelle1].[Feld1] FROM Tabelle1;
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 15:28:55
Nein brauchst du nicht, da du ja die Datensatzherkunft dann eh änderst.
lad doch mal deine Datenbank hoch, denn ich glaub ich hab nun so ziemlich jede Variante durch ^^
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli76 am Juli 06, 2010, 15:40:49
hier die material_DB

[Anhang gelöscht durch Administrator]
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 06, 2010, 16:17:32
Und hier die Lösung
Du solltest aber nochmal im Beziehungsfenster die Beziehungen anlegen!


[Anhang gelöscht durch Administrator]
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: strolli76 am Juli 07, 2010, 08:51:14
Morgen,

erst einmal vielen Dank fürdie Mühe mit mir !!!!!!
Aber ich bin keiner der sich nun auf dem Ding ausruht und sagt, es funktioniert, kümmere ich mich nicht mehr weiter drum. Kannst Du mir sagen, warum es nun geht bzw was bei meiner DB nicht korrekt war?
Titel: Re: Select Statement in ein Listenfeld einlesen
Beitrag von: blackoutNO am Juli 07, 2010, 10:48:42
Hallo,

1: dein Variable "firmenid" die du mit den Openargs gefüllt hast hieß genauso, wie die Kriterienspalte in der Tabelle -> nicht gut
2: du hast einen string im WHERE Kriterium verwendet, obwohl du eine Zahl übergeben hast
3: du hattest deine Variable firmenid nicht dimensioniert

Ich hab folgendes gemacht: -Statement kürzer
-direkt Openargs genutzt, da hier eine extra variable sinnlos war
-Integerkriterium verwendet