huan90
Goto Top

VBS-ODBC-Verbindung-Insert-wird nicht ausgefuehrt

Hallo liebe Administrator-Gemeinde,

ich habe ein Problem mit einem VB-Script (ich hoffe, da bin ich hier an der richtigen Stelle, obwohl der Bereich ausdrücklich VBA heißt).

In dem Script wird über eine ODBC-Schnittstelle eine Verbindung zu einer Access-Datenbank aufgebaut.
In der Datenbank sind 2 Tabellen enthalten.

Als erstes wird in dem Script die Verbindung wie folgt aufgebaut:
cnStr = "Provider=MSDASQL;DSN=XYZ;UID=;PWD=;"   
 Set cn = CreateObject("ADODB.Connection")  
 cn.ConnectionString = cnStr
 cn.Open
 Set ac = CreateObject("ADODB.Command")  
 Set rs = CreateObject("ADODB.RecordSet")  

Später wird ein Datensatz aus einer der Tabellen ausgelesen:
SQuery = "SELECT * FROM SAP_XYZ WHERE Linie = " & linie & " And Status = 1"  
rs.OPEN SQuery,cn
Set rs = cn.Execute(SQuery)

Bis hierher funktioniert auch alles wunderbar.
Anschließend wird eine INSERT-Anweisung in einer Variable (SQuerry) gespeichert. Diese soll wie folgt ausgeführt werden:
ac.ActiveConnection = cn
	 ac.CommandText = SQuery
	 ac.Execute

Die Insertanweisung (SQuerry) lasse ich mir mittlerweile zu testzwecken auch in eine Textdatei schreiben.
Kopiere ich die Anweisung und führe sie direkt in der Datenbank über ein Querry aus, wird der Datensatz auch korrekt eingetragen.

Mich wundert nun, dass 1.) Die Verbindung zur Datenbank funktioniert, 2.) der Insert-Befehlt funktioniert aber 3.) nicht beides zusammen?! O.o

Das Script läuft auch komplett ohne Fehler durch und ich weiß nicht mehr, wo/was ich noch suchen soll.

Ich hoffe ihr könnt mir weiter helfen und verbleibe mit freundlichem Gruß,

Huan90

p.s. Die Insertanweisung ist mit Leerzeichen 1468 Zeichen lang.

Content-Key: 261426

Url: https://administrator.de/contentid/261426

Printed on: April 20, 2024 at 09:04 o'clock

Mitglied: 114757
114757 Jan 28, 2015 updated at 16:58:16 (UTC)
Goto Top
Moin,
dann liegt der Fehler vermutlich in der Insert-Anweisung. Eine Query aus Access kann nicht immer 1zu1 aus Access in den Code übernommen werden, deswegen ist eine Analyse hier ohne deine Insert-Query sehr schwer.

Gruß jodel32
Member: emeriks
emeriks Jan 28, 2015 at 17:59:05 (UTC)
Goto Top
Hi,
Code-Tags verwenden!

Haste schon mal versucht, die Connection zu schließen und vor dem INSERT eine neue aufzubauen?

Schon mal den Weg über die Recordset-Methoden versucht?
rs.AddNew
rs.Fields("Field1").Value = Value1  
rs.Fields("Field2").Value = Value2  
...
rs.Update
Allerdings musst Du dann das Recordset schreibbar öffnen.

E.
Member: Huan90
Huan90 Jan 29, 2015 at 09:00:31 (UTC)
Goto Top
Moin,

Ich habe nun mehrere Versuche gestartet, allerdings mache ich wohl immer noch irgend etwas falsch.
Derzeit bekomme ich folgende Fehlermeldung:

"Die Argumente sind vom falsche Typ, liegen außerhalb des Gültigkeitsbereiches oder sind miteinander unvereinbar."

Die Verbindung wird mittlerweile vorher geschlossen und für den Insert neu geöffnet.

Set rs = CreateObject("ADODB.RecordSet")  
cn.Open
With rs
  .Open "PalTrans",cnStr ,adOpenForwardOnly,adLockOptimistic,adCmdTable  
  If Not .eof Then
    .AddNew
.Fields("FELD1").Value = tmpParts(1)  
.
.
.
.update
    .Close
  End If
End With
cn.Close

Und hier noch einmal der Insert (bei dem Versuch mit ac.CommandText = SQuerry / ac.Execute:
INSERT INTO PalTrans(ZZ_WERKS, ZZ_RESOURCE, ZZ_MATNR, ZZ_MHD, ZZ_GAMNG, ZZ_KUNCHARGE, ZZ_PALETTE, ZZ_TEID, ZZ_STEUERKZ, ZZ_BELADART, ZZ_PALSTATUS, ZZ_TYPTRAEGER, ZZ_TYP1TOCHTER, ZZ_MENGE1TOCHTER, ZZ_TYP2TOCHTER, ZZ_MENG2TOCHTER, ZZ_AUFNR, ZZ_ERDAT, ZZ_UZEIT, ZZ_BUTEXT, ZZ_STRETCH, ZZ_FEVOR, ZZ_MAKTX, ZZ_ENDKZ, ZZ_AUSBU, ZZ_MENGE, ZZ_MEINH, ZZ_IEDD, ZZ_IEDZ, ZZ_BUDAT, ZZ_CHARGE, Dateiname, ZZ_PACKBILD, ZZ_LAGENANZAHL, ZZ_PACKVORSCHRIFT, ZZ_INSMK, ZZ_KAR, ZZ_BESTQ, ZZ_VBELN, ZZ_KUNNR, ZZ_SERNR, ZZ_SERNRVERW, ZZ_HAUPTCHARGE, ZZ_EGALISIERUNG, Anwahl_Egalisierung, ZZ_FAKTURAGEW, ZZ_FAKTGEWEINH, ZZ_NENNFUELLM, ZZ_NENNFUELLEINH, ZZ_TOLERANZMENGE, ZZ_TOLERANZEINH, ZZ_TARA, ZZ_TARAGEWEINH, ZZ_HANDTARA, ZZ_NETTOGEWICHT, ZZ_NETTOGEWEINH, ZZ_BRUTTOGEWICHT, ZZ_BRUTTOGEWEINH, ZZ_MMCID, ZZ_CONTAINERDRUCK, ZZ_METALLDET_TEST, ZZ_SATZART, PV_TRAEGERTYP, PV_TOCHTERTYP1, PV_TOCHTERTYP2, Linie, Status, MHD2, test, Sollpaletten, Istmenge, Kundenartikelnummer, Kundenartikelbezeichnung, ZZ_TEID_TOCHTER1, ZZ_TEID_TOCHTER2) VALUES('2000','00001234','000000000000000970','20130107','     24000.000','0','30','','0','0','','01','','','','','000001083860','28012015','155627','','01','Z06','WALZEN-VMP STAND.    25KG-SACK','','','           750','KG','28012015','155627','28012015','0100086583','','','1','00970S750','','             0','','','','',0,'','',0,'         0.000','KG','','','','','','','','','','','','','','01','1','2','3','4',1,1,'07.01.2013','','32','','','','','')  

LG Huan90
Member: Huan90
Huan90 Jan 29, 2015 at 09:08:23 (UTC)
Goto Top
Hey,

hat sich erledigt...
SQuerry = "INSE......

ac.CommandText = SQuery


... schoenen Tag noch und Danke fuer eure Mühe!
Mitglied: 114757
114757 Jan 29, 2015 updated at 09:38:28 (UTC)
Goto Top
SQuerry = "INSE......

Diese verdammten r's face-wink

Den Beitrag dann noch auf gelöst setzen.