PDA

Vollständige Version anzeigen : Domwert in Code einfügen


Jens
06.06.2012, 08:09
guten Tag

ich möchte in einem Code den Wert aus der Tabelle "Textbausteine" dem Feld "Einleitungstext" ermitteln der 2 Kriterien erfüllt.
1. Kriterium ist im Feld "Art" = Angebot
2.Kriterium ist im Feld "Standard" = True ( ist als ja/nein Feld)
bei nachfolgender Codezeile erhalte ich aber Fehlermeldung
"Fehler beim kompilieren Sub oder Funktion nicht defiiert"

DomWert("[Einleitungstext]", "Textbausteine", "[Art] = Angebot AND [Standard]=True")

Wo habe ich den da den Fehler eingebaut ?

Danke für jede Hilfe

Jens

Storch
06.06.2012, 08:16
DomWert("[Einleitungstext]", "Textbausteine", "[Art] = 'Angebot' AND [Standard]= -1")

Ich hab Deinen Code mal modifiziert.

Du musst Strings wie 'Angebot' in einfache Hochkomma einschließen. Bei True/False verwende ich -1 für True und 0 für False.

Maxel
06.06.2012, 08:20
Im Code:

DLookup("Einleitungstext", "Textbausteine", "Art = 'Angebot' AND Standard")

Im Steuerelement oder Abfrageentwurf:

DomWert("Einleitungstext"; "Textbausteine"; "Art = 'Angebot' UND Standard")

stuz1
06.06.2012, 08:21
Naja,

erstens heißt es im VBA-Modul DLookup...

und zweitens suchst du bei ART nach einem String und musst hier einfache Anführungszeichen verwenden....

und drittens ist True = -1

Public Sub TextStuchen()
Dim Text As String
Text = DLookup("Einleitungstext", "Textbausteine", "Art = 'Angebot' AND Standard = -1")
Debug.Print Text
End Sub

Edit: OK, das = -1 kann man sich auch noch schenken..... :(

3 Antworten in 12 Minuten... nicht schlecht für einen Mittwoch morgen....

Jens
06.06.2012, 08:51
vielen dank für die umfangreichen Hilfen.
Ich habe den Code wie folgt angepasst

Public Sub NeuesAngebot()
Dim db As Database
Dim rsFirmst As DAO.Recordset
Dim rsTexte As DAO.Recordset
Dim txtAngTextVor As String

Set db = CurrentDb()
Set rsFirmst = db.OpenRecordset("Select AngebNrVon from tabFirmenstamm")
AngebNr = rsFirmst!AngebNrVon
db.Execute ("update tabFirmenstamm set AngebNrVon=" & AngebNr + 1)
Set rsTexte = db.OpenRecordset("Select AngebotAnfang,AngebotEnde from tabTexte")
txtAngTextVor = DLookup("Einleitungstext", "Textbausteine", "Art = 'Angebote' AND Standart = -1")
Debug.Print txtAngTextVor
txtAngTextNach = rsTexte!AngebotEnde
txtMatchcode = ""
Set rsFirmst = db.OpenRecordset("select MwSt from tabFirmenstamm")
Steuersatze = rsFirmst!MwSt

End Sub

aber ich bekomme leider keinen Text übergeben. Könnte es daran liegen das das Feld "Einleitungstext" als Memo eingestellt ist?

Jens

Maxel
06.06.2012, 08:54
AND Standart = -1
Erstens heißt das möglicherweise Standard und zweitens kann = -1 weggelassen werden.

Jens
06.06.2012, 09:03
Standart ist im Code schon richtig ,aber eben falsch geschrieben

beim weglassen von "= -1"
ändert sich leider auch nichts.

Jens

Maxel
06.06.2012, 09:09
Das Weglassen von = -1 war nicht zur Fehlerbehebung gedacht, sondern zur Rationalisierung. ;)

Gibt es denn Datensätze, die beiden Kriterien entsprechen?

Bastle mal eine Abfrage aus der Tabelle Textbausteine und stelle die Kriterien Art = "Angebote" AND Standart = -1 ein. Erhältst Du bei der Ausführung der Abfrage Datensätze?

stuz1
06.06.2012, 09:09
Ist es möglich dass das Feld "Art" als Nachschlagefeld definiert ist und eigentlich eine Long-Wert abgespeichert hat? Sprich: Gebundene Spalte = 1, erste Spalte ausgeblendet? Kommen die Werte "Angebot" usw. aus einer anderen Tabelle?

Jens
06.06.2012, 09:17
in der Tabelle ist der FelddatenTyp auf Text gestellt,
und als Nachschlagefeld definiert mit einer Wertliste wie folgt
"Angebote";"Rechnungen";"Briefe";"Mahnungen";"diverse"

In der Tabelle gibt es immer 1 DS der beide Kriterien erfüllt.

Jens

Jens
06.06.2012, 09:29
viele Dank nochmals für eure Hilfe
Ich habe jetzt mal die rot markierten Zeilen ausgeschlossen und es Geht.
Ich weiß zwar nicht wie aber ok.

Public Sub NeuesAngebot()
Dim db As Database
Dim rsFirmst As DAO.Recordset
Dim rsTexte As DAO.Recordset
'Dim txtAngTextVor As String

Set db = CurrentDb()
Set rsFirmst = db.OpenRecordset("Select AngebNrVon from tabFirmenstamm")
AngebNr = rsFirmst!AngebNrVon
db.Execute ("update tabFirmenstamm set AngebNrVon=" & AngebNr + 1)
Set rsTexte = db.OpenRecordset("Select AngebotAnfang,AngebotEnde from tabTexte")
txtAngTextVor = DLookup("Einleitungstext", "Textbausteine", "Art = 'Angebote' AND Standart = -1")
'Debug.Print txtAngTextVor
txtAngTextNach = rsTexte!AngebotEnde
txtMatchcode = ""
Set rsFirmst = db.OpenRecordset("select MwSt from tabFirmenstamm")
Steuersatze = rsFirmst!MwSt

End Sub


Jens

stuz1
06.06.2012, 09:29
Fehler bei Dlookup sind immer die gleichen:
- Schreibfehler (oft auch im Tabellennamen selber oder Feldnamen)
- Anführungszeichen zu viel oder zu wenig / Datenfelder...

Da die grundsätzliche Syntax jetzt stimmt ist irgendwo der Wurm drin.....

Du kannst die Feldnamen auch noch in [] eckige Klammern setzen, sollte aber auf jeden Fall auch so gehen....