Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Kein Betreff angegeben

logo3 / 5 Antworten / Baumansicht Nickles

Hallo

Wenn ich diese SQL laufen lassen möchte bekommen ich einen error " 3219 ungültige operation".
ich verstehe nicht warum. So wie ihr unten sehen könnt, will ich eine tabelle angelegen wobei die daten aus de tabelle struc kommen und zusätzliche 3 weitere felder. diesen sind nicht in eine tabelle hinterlegt, deshalb im acess2003 frägt ihr nach den wert dieser felder.
In der SLQ anweisung diese 3 spezielle felder haben sind zu einer variable zugeordnet, ( [datum] AS Expr2, [betreff] AS Expr3, [Text] AS Expr1)
Wenn ich aber zu die variablen Expr1,Expr2 und Expr3 einen Wert zuordne müsste jedoch nicht mehr danach fragen.
Ich mache schon lange rum aber ich kommen nicht auf den problem.
kann mir bitte jemand sagen was ich falsch mache? und mir eventuell die korektur vornimmt.


das prog.
---------------------------------------------------------------------
Dim objDB As DAO.Database
Dim objRS As DAO.Recordset
Dim strSQL As String


strSQL = "INSERT INTO Lieferscheine ( [sales unit], GB, [VKL person], [GB person], [mitarbeiter], name, Lieferdatum, Betreff, Text )" & _
"SELECT struc.[sales unit], struc.GB, struc.[VKL person], struc.[GB person], struc.[mitarbeiter], struc.name, [datum] AS Expr2, [betreff] AS Expr3, [Text] AS Expr1 " & _
"FROM struc WHERE (((struc.GB)='25-000'));"


gei_text="hallo"
gei_datum="09/05/2007"
gei_betreff="probe"

Expr1 = gei_text
Expr2 = gei_datum
Expr3 = gei_betreff


Set objDB = CurrentDb
Set objRS = objDB.OpenRecordset(strSQL, , DAO.dbSQLPassThrough)


Call objRS.Close
Set objRS = Nothing

Set objDB = Nothing
---------------------------------------------------------------------

ich danke euch für eure Hilfe
logo3

bei Antwort benachrichtigen
T-Rex logo3 „Kein Betreff angegeben“
Optionen

Du gehst (aus irgendwelchen Gründen) davon aus, daß VBA (oder VB) den Inhalt einer Zeichenkette als Variablenname interpretiert. Außerdem verdrehst Du Feldname und Feldwert.

Beispiel:
"... [datum] AS Expr2 ..."
gei_datum="09/05/2007"
Expr2 = gei_datum

Das ist jedoch nicht der Fall, der Inhalt einer Zeichenkette und der Name einer Variablen sind für VBA (und alle anderen Sprachen auch) zwei völlig verschiedene Dinge.

Ist-Zustand:
Deine SQL-Abfrage sucht im Moment nach einem Feld namens "datum" in der Tabelle "struc". Wenn dieses Feld nicht gefunden wird, wirst Du gefragt, was Du als Wert einsetzen möchtest. Der eingegebene Wert wird in einem Feld namens "Expr2" abgelegt.

Soll-Zustand:
Statt den Inhalt des Feldes "datum" auszulesen möchtest Du selbst einen Inhalt vorgeben, ohne gefragt zu werden. Der Inhalt soll im Feld "datum" abgelegt werden.

Lösung:
Du mußt die Werte mit in die Zeichenkette einbauen.

... struc.name, " & Format$(CDate(2007, 5, 9), "\#mm\/dd\/yyyy#") & " AS datum ...

Für die anderen Felder geht das analog.

 GrüßeT-Rex 
bei Antwort benachrichtigen
logo3 T-Rex „Du gehst aus irgendwelchen Gründen davon aus, daß VBA oder VB den Inhalt einer...“
Optionen

hallo
erstmal vielen dank für deine Hilfe, ich bin in SQL nicht sehr fit.

ich habe die variablen so festgelegt

Dim gei_datum As Date
Dim gei_betreff As String
Dim gei_text As String

gei_datum=today ()
gei_betreff="hallo"
gei_text="das ist ein bsp."


strSQL = "INSERT INTO Lieferscheine ( [sales unit], GB, [VKL person], [GB person], [mitarbeiter], name, Lieferdatum, Betreff, Text )" & _
"SELECT struc.[sales unit], struc.GB, struc.[VKL person], struc.[GB person], struc.[mitarbeiter], struc.name, " & Format$(CDate(gei_datum), "\#mm\/dd\/yyyy#") & " AS datum , " & Format$(gei_betreff(50) & " AS betreff , " & Format$(gei_text(100) & " AS Text FROM struc;"))" & _ "WHERE (((struc.GB)='25-000'));"

ich bekomme folgende fehlermeldung "man erwartet eine matrix" bei & Format$(gei_betreff(50) & " AS betreff

kannst du mir jetzt noch verraten was dabei falsch ist ??? danke


bei Antwort benachrichtigen
T-Rex logo3 „hallo erstmal vielen dank für deine Hilfe, ich bin in SQL nicht sehr fit. ich...“
Optionen

Mit der "INSERT INTO ... SELECT FROM"-Anweisung bin ich nicht so vertraut, ob diese Syntax so richtig ist, mußt Du in der Hilfe nachschauen.
Bei den Abfragen in der SQL-Anweisung kann ich Dir aber auf jeden Fall helfen.

Dim gei_datum As Date
Dim gei_betreff As String
Dim gei_text As String
Dim strSQL As String

gei_datum = Now
gei_betreff = "hallo"
gei_text = "das ist ein bsp."

strSQL = "INSERT INTO Lieferscheine ([sales unit], GB, [VKL person], [GB person], [mitarbeiter], [name], Lieferdatum, Betreff, [Text]) " & _
"SELECT struc.[sales unit], struc.GB, struc.[VKL person], struc.[GB person], struc.[mitarbeiter], struc.[name], " & _
Format$(CDate(gei_datum), "\#mm\/dd\/yyyy#") & " AS datum, " & _
"'" & Replace$(gei_betreff, Chr$(39), Chr$(39) & Chr$(39)) & "' AS betreff, " & _
"'" & Replace$(gei_text, Chr$(39), Chr$(39) & Chr$(39)) & "' AS [Text] " & _
"FROM struc WHERE (struc.GB = '25-000');"

Debug.Print strSQL


Im Debug-Fenster (zu erreichen über STRG+G) kannst Du nun die fertge SQL-Anweisung sehen, wie sie später an die Datenbank übergeben wird.
 GrüßeT-Rex 
bei Antwort benachrichtigen
logo3 T-Rex „Mit der INSERT INTO ... SELECT FROM -Anweisung bin ich nicht so vertraut, ob...“
Optionen

danke es geht aber ich bekomme eine error code 3219 ungültige operation, ich glaube es hängt mit den recordset ist nur lese status kann also nichts updaten. kann das sein ^????

-------
Set objDB = CurrentDb
Debug.Print (strSQL)
Set objRS = objDB.OpenRecordset(strSQL, , DAO.dbSQLPassThrough)
-----------------------

danke t-rex

gruss
logo3

bei Antwort benachrichtigen
T-Rex logo3 „danke es geht aber ich bekomme eine error code 3219 ungültige operation, ich...“
Optionen

Ich update meine Recordset-Objekte nicht, daher kann ich Dir bei diesem Fehler nicht helfen. Wenn ich Daten ändern will, gehe ich mit SQL auf die Datenbank los.

 GrüßeT-Rex 
bei Antwort benachrichtigen