PDA

Vollständige Version anzeigen : Schleife geht nicht! Laufzeitfehler


Joggi
07.08.2001, 09:39
Hallo
ich habe folgende Schleife nach langem hin und her zusammen getüftelt!

Es soll die Daten bisher nur eine Spalte (hier Interpreten) aus der Abfrage auslesen und dann in die Variable Text in der Tabelle Dates speichern.

Pro Zeile die AUsgelesen wird soll dann auch im textfeld eine Zeilenumbruch gemacht werden.


Als Fehlermeldung kommt Laufzeitfehler 13

Typen unverträglich

Als Fehler wird die zeile
Set rs = CurrentDb.OpenRecordset.........
gezeigt


Grübel???

wer kann denn helfen?

Joggi

Private Sub Befehl19_Click()

Dim rs As Recordset
Dim umbr As String
Dim Textle As String
umbr = Chr$(13) & Chr$(10)
Textle = ""
Set rs = CurrentDb.OpenRecordset("SELECT [Konzert Zuordnung].Interpreten FROM [Konzert Zuordnung] INNER JOIN Zuordnung ON [Konzert Zuordnung].ID = Zuordnung.[Konzert Zuordnung_ID] WHERE (((Zuordnung.Ordner_ID)=(SELECT[Ordner_ID] FROM [Dates])) AND ((Month([Datum]))=(SELECT[Monat] FROM [Dates])) AND ((Year([Datum]))=(SELECT[Jahr] FROM [Dates])));")
If rs.RecordCount > 0 Then
rs.MoveFirst
While Not rs.EOF

Textle = Textle & umbr
rs.MoveNext
Wend

End If
rs.Close
Set rs = Nothing

Me![Text] = Trim$(Textle)

End Sub

A.S.
07.08.2001, 10:31
Hallo Joggi,

suche mal im Forum nach ADO/DAO bzw. DAO/ADO (Suche oben rechts) innerhalb der letzten 10 Tage.

Gruß

Arno

Stema
07.08.2001, 10:35
Hallo Joggi,

mir ist aufgefallen, daß sich teilweise kein Leerzeichen zwischen "SELECT[" befindet.

Joggi
07.08.2001, 10:51
Hi,vielen Dank

zwar ist jetzt die Fehler Meldung weg, doch die Daten aus der Select abfrage sind immernoch nicht in meine Tabelle [Dates] im Feld Text.

Ist sonst noch was falsch !

Hat mir vielleicht jemand ein kurzes Bsp.

Danke schonmal!

Joggi

A.S.
07.08.2001, 10:57
Hallo Jogi,

einmal: für Deine String-Variable "umbr" gibt es die Konstante vbCrLf ;)

Zum anderen: Hast Du mal getestet ob Deine Query (einfach mal den SQL-String in eine Abfrage (SQL-Ansicht) kopieren) fehlerfrei ausgeführt wird und ein Ergebnis bringt?

Gruß

Arno

Stema
07.08.2001, 11:00
Hallo Joggi,

mit Set rs = CurrentDb.OpenRecordset..... ermittelst Du ja zuerst nur alle in Frage kommenden Datensätze.
Erscheinen denn alle DS in Deinem Textfeld? Dann wäre die Abfrage schon mal richtig.

Joggi
07.08.2001, 11:11
Hallo Arno

Die SQL Abfrage habe aus einer Abfrage, d.h. ich habe eine Abfrage erstellt und dann in die SQL ANsicht geschalten.

Funktioniert also !
Ergebnis

1 Spalte und 4 Zeile

Hallo Stema


leider wird in die Variable Textle nichts geschrieben.

habe soeben

MsgBox Textle


noch eingegeben um zu schauen ob was drin ist

negativ.Leider leer.

Es sollte quasi hintereinander die Daten stehen getrennt von Return und LF


Irgendwo ist der Fehler noch drin

joggi

Stema
07.08.2001, 12:48
Hallo Joggi,

hier ist mir noch was aufgefallen.

Set rs = CurrentDb.OpenRecordset("SELECT [Konzert Zuordnung].Interpreten FROM [Konzert Zuordnung]
INNER JOIN Zuordnung ON [Konzert Zuordnung].ID = Zuordnung.[Konzert Zuordnung_ID]
WHERE (((Zuordnung.Ordner_ID)=(SELECT[Ordner_ID]
FROM [Dates])) AND ((Month([Datum]))=(SELECT[Monat] FROM [Dates])) AND ((Year([Datum]))=(SELECT[Jahr] FROM [Dates])));")
If rs.RecordCount > 0 Then
rs.MoveFirst
While Not rs.EOF

Textle = Textle & umbr
rs.MoveNext
Wend

If rs.RecordCount > 0 Then UND rs.MoveFirst löschen, brauchst Du nicht.

Prüfe mal, ob dann die Schleife durchlaufen wird. Und der Variablen Texle mußt Du noch einen Wert zuweisen, nach dem Motto:

Textle = rs!DeineSpalte & vbCrLf

Joggi
07.08.2001, 14:01
Hi Stema

eine Frage habe ich noch!

Was soll ich denn für "meine Spalte" einsetzen?

Wenn ich die select Anweisung in eine Abfrage kopiere, kommt dann NAchschlagen in Interpreten!

Soll dies meine Spalte sein?

Grüße Joggi

Joggi
07.08.2001, 14:11
Hi Stema, ich wollte Dir nur sagen, dass es funktioniert!

Suppppppperrrrrrr

Danke Schön


Joggi

PS: Eine Frage noch!

Wie teile ich denn Select anweisungen , wenn Sie zulange für eine Zeile sind oder macht dies nichts?

Stema
07.08.2001, 14:33
Hallo Joggi,

am Ende der Zeile LEERZEICHEN und _
Kannst Du auf alle Zeilen anwenden, z.B. bei If...then...

Bsp.
Achtung: Strings teilen und mit & zusammenfügen.

Set rs = CurrentDb.OpenRecordset("SELECT [Konzert Zuordnung].Interpreten FROM " & _
"[Konzert Zuordnung] INNER JOIN Zuordnung ON " & _
"[Konzert Zuordnung].ID = Zuordnung.[Konzert Zuordnung_ID] " & _
"WHERE (((Zuordnung.Ordner_ID)=(SELECT[Ordner_ID] FROM [Dates])) " & _
"AND ((Month([Datum]))=(SELECT[Monat] FROM [Dates])) AND " & _
"((Year([Datum]))=(SELECT[Jahr] FROM [Dates])));")
While Not rs.EOF
Textle = Textle & vbCrLf
rs.MoveNext
Wend

Stema
07.08.2001, 14:41
Noch ein Tipp:

Bei Objekten keine Leerzeichen verwenden "Konzert Zuordnung". Besser Kurzbegriffe wie "tblKonZu" und "Konzert Zuordnung" nur anzeigen lassen.

fld steht für Feld, tbl für Tabelle etc. Auch bei anderen Objekten, z.B. txtInterpret, Listfeld lstMusikrichtung etc. So weisst Du bei jedem Namen sofort, um welches Objekt es sich handelt und hast Definitionen leichter (und Fehlersuchen).

Joggi
08.08.2001, 08:55
Hi Stema,

vielen Dank für Deine Tips,

warst mir ne große Hilfe!

Merci !!!

Joggi


PS: Als ANfänger kämpft man sich halt erst mal so durch !


Noch ne andere FRage, vielleicht weist Du da auch ne Antwort drauf!


ich habe einen Button! Dieser soll nur angezeigt werden, wenn in der Tabelle ein bestimmtes Feld auf Ja steht.

Geht so was? Falls ja hast Du mir einen Tip!

Danke!

Ciao

Joggi

Stema
09.08.2001, 00:42
Hi Joggi,

klar geht das.
Bsp.
2 Möglichkeiten.
Schaltfläche unsichtbar Me.cmdButton.Visible = false
oder nicht anklickbar Me.cmdButton.Enabled = false
Erstelle den Button standardmäßig unsichtbar oder disabled. In OnOpen_Form setzt Du folgendes:

Set R = CurrentDB.OpenRecordset("SELECT DeinJaNeinFeld FROM DeineTabelle WHERE...")
If Not R.EOF then
If R!DeinJaNeinFeld = TRUE then Me.cmdButton.Enabled = TRUE
end if

Joggi
09.08.2001, 15:56
klasse funktioniert!

Danke Dir

Joggi

Merci