PDA

Vollständige Version anzeigen : Syntaxfehler


wejo
22.06.2001, 14:32
Habe folgenden Code

Dim rs As Recordset
Dim RetStr As String
RetStr = ""
Set rs = CurrentDb.OpenRecordset("SELECT B FROM stückliste WHERE B ='" & Me![ArtNr] & ";")
If rs.RecordCount > 0 Then
rs.MoveFirst
While Not rs.EOF
RetStr = RetStr & rs!B & " "
rs.MoveNext
Wend
End If
rs.Close
Set rs = Nothing
Me![ArtNr] = Trim$(RetStr)

Artnr u. B = Type Text

Bekomme syntaxfehler

Was mache ich falsch , bin Anfänger in VBA

mfg

Josef

Stema
22.06.2001, 14:38
Vermute mal:
("SELECT B FROM stückliste WHERE B ='" & Me![ArtNr] & """;")

Morli
22.06.2001, 16:48
Hallo wejo,

wenn das von Stema dein Problem nicht löst, dann kompilieren den Code doch mal.

Normalerweise wird dir dann die "falsche" Zeile gelb markiert. Ich könnte mir auch vorstellen, das sich dein Code am rs.RecordCount aufhängt, da es (zumindest in A97) notwendig ist, zuerst mal ein rs.movelast durchzuführen, um die Anzahl der Datensätze zu ermitteln.
Du könntest dann auch einfach
If Not rs.EOF
verwenden!

Gruß

Rainer :)

P.S. Kompilieren ist übrigens immer sehr empfehlenswert! Da findet man so manchen (Tip)fehler!

wejo
22.06.2001, 16:56
Folgender Code wird makiert

Set rs = CurrentDb.OpenRecordset("SELECT B FROM stückliste WHERE B ='" & Me![ArtNr] & """;")

Beim kompilieren wird kein Fehler angezeigt.
Benutze A00

wejo
22.06.2001, 17:00
Folgender Code wird makiert
Set rs = CurrentDb.OpenRecordset("SELECT B FROM stückliste WHERE B ='" & Me![ArtNr] & """;")

Beim kompilieren wird kein Fehler angezeigt.
Benutze A00

mfg

Josef

KamelzehMC
22.06.2001, 18:53
Ich gehe mal davon aus du hast den Code rauskopiert :)
Dann muss es richtig heisen:
"SELECT B FROM stückliste WHERE B='" & Me![ArtNr] & "'"

d.h. du hast ein ' vergessen und das semikolon ist auch falsch am ende

marmic55
22.06.2001, 19:09
Hallo,

Wenn es sich bei [ArtNr] um ein Zahlenfeld handelt, dann
("SELECT B FROM stückliste WHERE B =" & Me![ArtNr] & ";").

Handelt es sich um ein Textfeld, dann:

("SELECT B FROM stückliste WHERE B = '" & Me![ArtNr] & "';").

Übersichtlicher kann es werden, wenn die "Select-Anweisung" in eine Variable aufgenommen wird.

Gruß

Michael
(ein A97er, daher hier o. Gewähr).

wejo
22.06.2001, 20:49
Fehlermeldung bei folgeden Code

Set rs = CurrentDb.OpenRecordset("SELECT B FROM stückliste WHERE B='" & Me![ArtNr] & "'")Typen unverträglich


Werden die Klammern weggelassen folgende Fehlermeldung

Erwarte Anweißungsende


Was ist falsch ???

mfg
Josef

jinx
22.06.2001, 20:49
<font size="2" face="Century Gothic">Moin, wejo und marmic55,

ich habe heute auch erfahren, dass der Server spinnt (ich meine natürlich die Server der Teilnehmer ;)).

Die Beiträge wurden im Zuge der Überarbeitung zusammengeführt und bearbeitet - 24.11.2003</font>

jinx
22.06.2001, 21:51
<font size="2" face="Century Gothic">Moin,

wie schön, dass wir im Forum sind und jeder seine eigene Meinung kundtun darf. Daher mein Senf dazu:

@wejo: seh ich da wirklich ''' hinter dem Gleichheitszeichen?
Verstehen könnte ich die die Teilausdrücke einschließenden ", aber was macht das zusätzliche ' da?
Du kennst die KnowHow.mdb von Klaus Oberdalhoff? Wenn nicht, hier downloaden (http://www.access-paradies.de/Code/Sammlung/Sammlung2/KnowHw30.htm)

@stema: Glaub ich einfach nicht...

@Morli: Ich ziehe die Möglichkeit (aus Excel-Schlachten gelernt) von OPTION EXPLICIT vor; da sollte eigentlich gemeckert werden, wenn eine Variable nicht definiert wurde

@KamelzehMC: joo, ich befürchte auch einen Fehler beim Kopieren, aber im Gegensatz zu Dir entscheide ich mich für ' zuviel und ; muss hin (SQL-Anweisungen werden doch durch ; abgeschlossen, oder?)</font>

Stema
22.06.2001, 22:40
Hallo Josef,
ist die Artikelnummer als Text oder Zahl in der Tabelle definiert?
Bei Zahl:
Dim DB as Database
Dim rs As Recordset
Set DB = CurrentDb
Set rs = DB.OpenRecordset("SELECT B FROM stückliste WHERE B = " & Me.ArtNr)

Bei Text:
Dim DB as Database
Dim rs As Recordset
Set DB = CurrentDb
Set rs = DB.OpenRecordset("SELECT B FROM stückliste WHERE B = """ & Me.ArtNr & """")

So muß es funktionieren, hab' ich schon 1000mal gemacht.

Manuela Kulpa
23.06.2001, 06:37
<font face="Verdana" size="2">Hi,

Und wieder haben wir das Problem, das die Access-Version nur mal so beiläufig irgendwo im ganzen Thread steht. Leute schaut doch ab und zu mal in die <a href="http://www.ms-office-forum.net/forum/netiquette.php" target="_blank"><font color="#FF0000">Netiquette</font></a>! Eigentlich ist der Code OK, bis auf einen kleinen Fehler in der SQL-Anweisung. Da hier aber mit Access 2000 gearbeitet wird, verweise ich mal wieder auf Karl Donaubauers

<a href="http://www.donkarl.com/AccessFAQ.htm?/FAQ/FAQ7Bugs.htm" target="_blank">FAQ 7.11 - Dim DB As Database in A00 bringt Fehler</a>

Was bedeutet das: Schau nach ob unter VBA-Ansicht Menü Extras - Verweise - die Microsoft DAO 3.6 Object Library eingebunden ist und deklariere explizit die DAO Bibliothek.

So könnte es z.B. aussehen:</font>

<FONT SIZE=1 FACE=Courier New> <FONT COLOR=#008000>' Wichtig, da du mit A2K arbeitest</FONT>
<FONT COLOR=#000080>Dim</FONT> rs <FONT COLOR=#000080>As</FONT> DAO.Recordset

<FONT COLOR=#000080>Dim</FONT> RetStr <FONT COLOR=#000080>As String</FONT>
<FONT COLOR=#000080>Dim</FONT> artNr <FONT COLOR=#000080>As String</FONT>
RetStr = ""

<FONT COLOR=#008000>' So sollte der SQL-String funktionieren</FONT>
<FONT COLOR=#000080>Set</FONT> rs = db.OpenRecordset("SELECT B FROM stückliste WHERE B = '" & Me!artNr & "'")
</FONT>
<font face="Verdana" size="2">
Wenn du das berücksichtigst, sollte dein Code funktionieren.

slg</font>

wejo
23.06.2001, 10:19
Leider funkt es mit keiner der Lösungen.

Ich will es mal auf den Punkt bringen.

Hauptformular mit Kundendaten , eingebundenes Unterformular mit Daten " Artikel "

Folgender Sachverhalt


Bei Eingabe eines Artikel " A " ( Format Text )soll geprüft werden ob ein Artikel " B " zum Artikel " A" gehört,
wenn ja dann alle Artikel " B " die zu Artikel " A " gehören automatisch anfügen.

Ich hoffe ich habe mich richtig ausgedrückt !!

mfg

Josef