Hallo zusammen,
ich habe folgenden Code:
Set db2 = CurrentDb
Set rs = db2.OpenRecordset("SELECT * FROM qryDetDispo4 WHERE vk_nr = " & Me!vk_nr)
For Each fld In rs.Fields
For Each prop In fld.Properties
If prop.name = "Description" Then
sf() = Split(prop.Value, "|")
If UBound(sf) >= 1 Then
s = Switch(sUeberschrift = "bmu.bgs", sf(0), sUeberschrift = "bmu.nwl", sf(1), sUeberschrift = "bmu.uns", sf(2))
If Len(s) > 0 Then sOut = sOut & Chr(34) & s & Chr(34) & ", " & Chr(34) & rs(fld.name) & Chr(34) & vbCrLf
Else
sOut = sOut & Chr(34) & prop.Value & Chr(34) & ", " & Chr(34) & rs(fld.name) & Chr(34) & vbCrLf
End If
End If
Next prop
Next fld
Dieser Code funktioniert aber so nicht. Ich denke mal der hat ein Problem mit der SQL-Anweisung in dem Recordset.
Weil wenn ich nur diesen Code verwende dann funktionierts:
Set rs = db2.OpenRecordset("qryDetDispo4")
Wo könnte der mein Fehler liegen? Ich habe jetzt schon ein paar Tage versucht eine Lösung zu finden. Aber ohne Erfolg.
Hallo,
da kann das Problem dann eigentlich nur in der WHERE-Klausel liegen.
Ist das Feld vk_nr in dieser Schreibweise in der qryDetDispo4 enthalten?
Ist das Feld vk_nr vom Datentyp Zahl?
Gibt es das Feld vk_nr im Formular und hat es zum Zeitpunkt dieses Aufrufs einen Inhalt (ebenfalls Zahl)?
ZitatDieser Code funktioniert aber so nicht
Wenn das alles zutrifft - liefert die Abfrage mit dem Kriterium zumindest einen Datensatz zurück?
Welcher Fehler entsteht?
Lies bei Fehler mal die Err.Number und die Err.description aus
Ja auf alle 3 Fragen.
Wenn ich diesen Teil:
If prop.name = "Description" Then
End if
wegmache bekomme ich folgende Fehlermeldung:
Laufzeitfehler 3219
Unzulässige Operation
Der Debugger springt dann in folgende Zeile:
sf() = Split(prop.Value, "|")
Hier ist noch die Definition der Variablen:
Dim rs As DAO.Recordset
Dim db2 As DAO.Database
Dim fld As DAO.Field
Dim prop As DAO.Property
Dim sOut As String
Dim sf() As String
Dim s As String
Dim ff As String
Dim sUeberschrift As String
Dim strDateiname As String
Hallo,
bzgl. dieser Fehelrmeldung:
Dim sf As Variant
.
.
sf = Split(prop.Value, "|")
Wenn ich das auf Variant änder bekomme ich die Fehlermeldung "Typen unverträglich"
Und WO entsteht der Fehler?
Hast Du in jedem Beschreibungsfeld jeden Feldes mindestens 3 durch "|" getrennte Bezeichnungen (Strings) ,falls überhaupt etwas drinsteht?
ZitatUnd WO entsteht der Fehler?
Ich denke mal der Fehler liegt hier:
If UBound(sf) >= 1 Then
Ich habe diesen Code auch schonmal in einer anderen Datenbank ausprobiert. Da funktionierts.
Ich habe jetzt mal den Unterschied verglichen.
In meiner jetztigen DB springt der immer bei dem If UBound(sf) >= 1 Then in Else. Und das für jedes Feld der Abfrage. Bei meiner anderen DB da wo es funktioniert geht er nur die Felder durch wo auch eine Beschreibung hinterlegt ist und geht dann immer durch das If. Aber woran könnte das liegen?
ZitatHast Du in jedem Beschreibungsfeld jeden Feldes mindestens 3 durch "|" getrennte Bezeichnungen (Strings) ,falls überhaupt etwas drinsteht?
Wenn ich etwas bei der Bezeichnung stehen habe dann mit "|" getrennt. Ich habe aber nicht in jedem Feld etwas stehen. Soll auch nicht.
Sorry , nein der Fehler liegt nicht da sondern hier:
If prop.name = "Description" Then
prop.name = "Description" = Falsch ist das Ergebnis.
Das verstehe ich aber nicht weil ich eindeutig bei einigen Felder eine Beschreibung hinterlegt habe.
Hallo,
da wirst Du halt gerade ein Feld erwischt haben, das keine Beschreibung besitzt.
Bei mir klappt der Code jedenfalls, wenn man von der latenten Fehlermöglichkeit absieht, die entsteht, wenn zwar eine Beschreibung existiert, darin aber keine (mindestens) zwei "|" -Zeichen enthalten sind.
Setz einen Haltepunkt an den Anfang der äußeren Schleife und fahre das Ganze mit Einzelschritt durch...
Also wenn ich anstelle "SELECT * FROM qryDetDispo4 WHERE vk_nr = " & Me!vk_nr einfach nur qryDetDispo4 nehme dann funktioniert das. Kann es sein, dass es bei der SELECT-Anweisung keine Beschreibungen gibt auch wenn ich diese bei qryDetDispo4 angelegt habe?
Mit der SELECT-Anweisung bekomme ich keine Fehlermeldung aber ich bekomme auch kein Ergenis. Das erkennt einfach nicht, dass es dort Beschreibungen gibt.
Ich habe den Haltepunkt gesetzt und genau das passiert. Immer wird If prop.Name = "Description" Then als Falsch erkannt.
Hallo,
da würde ich eher sagen, der SQL-String liefert keine Datensätze, d.h. die Where-Condition trifft nie zu.....
Was ist denn "qryDetDispo4" ? lt. Benamsung muß man eine Abfrage annehmen.
Auf diese Abfrage setzt Du nochmal ein Kriterium an, bei dem
a) das Feld in der Abfrage enthalten sein muß
b) der Datentyp Zahl, long sein muß
c) "Me!vk_nr" nicht NULL sein darf
Ja das ist eine Abfrage.
Und die WHERE Klausel trifft zu. Ich habe das auch schon getestet.
Ja auf a,b und c
Also ich weiß wirklich nicht!!! ??? ???Jetzt habe ich das ganze mal neu aufgebaut und das funktioniert!!
Aber ich habe keine Ahnung was sich jetzt geändert hat.
Vielen Dank trotzdem für eure Hilfe.