Thias78 Geschrieben 4. Juni 2003 Teilen Geschrieben 4. Juni 2003 Hallo!! Ich hab eben ein kleines Windowsprogramm geschrieben... es ist eigentlich alles wunderbar und funktioniert auch... bis auf: ICH KANN EINEM FELD DER DATENBANK KEINE NEUEN WERTE ZUWEISEN!!! *heul* ich wähle einen wert aus... sag ihm, dass ich den eintrag gerne editieren möchte und dann kommt die zuweisung... hier kommt eine fehlermeldung... schalte ich die zuweisung für testzwecke aus, so führt er das programm inkl. update und tabelle schließen bis zum ende aus... aber der lässt mich ums verrecken die zuweisung nicht ausführen... und ja... ich habe darauf geachtet, dass es der selbe datentyp ist... liegt das am DB2 ODBC treiber in der version 7?? lässt der keine änderungen zu?? mach ich sonst was falsch?? wie könnt ich das trotzdem hinbekommen??? HILFE!!! DANKE!!!!!!! *wink* Thias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 4. Juni 2003 Teilen Geschrieben 4. Juni 2003 Original geschrieben von Thias78 ... hier kommt eine fehlermeldung...Wäre gut, wenn du noch verrätst, wie die lautet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thias78 Geschrieben 4. Juni 2003 Autor Teilen Geschrieben 4. Juni 2003 ... Nachtrag!! ... Die Fehlermeldung lautet: CLI0150E Der Treiber unterstützt die Operation nicht. SQLSTATE=S1C00 ... ich befürchte ja das schlimmste, und zwar, dass der ODBC treiber das einfach nicht kann... ABER DER HAT DAS ZU KÖNNEN... ist doch schließlich version 7.01.irgendwas... falls ich recht hab... wie könnte ich in C++ windows-programmierung (Dialogfenster) das sonst noch lösen, dass ich evtl direkt auf die DB2 DB zugreif?? *wink* Thias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thias78 Geschrieben 4. Juni 2003 Autor Teilen Geschrieben 4. Juni 2003 hallo nochmal!!! wie bereits mein letzter eintrag hier, so hab ich nach wie vor das problem nicht gelöst... kurz zur erinnerung... ich schreibe ein dialog-programm in MS V C++ ich mache über ODBC eine abfrage nach einem eindeutigen datensatz ich öffne den recordset ich sag, dass ich den recordset gern mit EDIT() verändern möchte ich mach einem feld der tabelle eine zuweisung (löst den fehler aus) /* fehlermeldung: CLI0150E Der Treiber unterstützt die Operation nicht. SQLSTATE=S1C00 */ ich würde (!!!) mit einem UPDATE() die geänderten werte zurückschreiben ich würde (!!!) den RS wieder schließen... ... auf der IBM-seite hab ich jetzt nach stundenlanger suche was gefunden: ZITAT: (http://www-1.ibm.com/support/docview.wss?uid=swg1PQ36209) If this error occurs in an ODBC application, or the ODBC application trace is examined, the symptom is SQLGetData() returning SQL_ERROR due to SQLSTATE S1C00. The symptom can be intermittent. The cause of the symptom is an uninitialized field in an ODBC control block that is built when processing result sets from stored procedures. ZITAT ENDE ... und was sagt uns jetzt diese beschreibung?? diese beschreibung ist für DB2 V6 ... wir haben aber 7.irgendwas es ist dann auch noch eine beschreibung für version 5... die haben wir aber auch nicht... für version 7 find ich nix passendes!! irgendwelche ratschläge?? oder wenigstens trost!?! danke :confused: Thias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 4. Juni 2003 Teilen Geschrieben 4. Juni 2003 Dafür hättest du kein neues Thema eröffnen müssen, ich führ das mal zusammen. Was ist das denn für ein Feld, und wie sieht die Zuweisung aus? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thias78 Geschrieben 4. Juni 2003 Autor Teilen Geschrieben 4. Juni 2003 also beim automatischen einfügen durch SDI hat das zu ersetzende feld den typ CString... genauso wie auch der zuzuweisende wert CString ist... auch die länge stimmt exact überein ... die zuweisung sieht so aus: tbl.m_strFilter = _T("[FELD1] = '"); tbl.m_strFilter += var1; tbl.m_strFilter += _T("' AND "); tbl.m_strFilter += _T("[FELD2] = '"); tbl.m_strFilter += var2; tbl.m_strFilter += _T("'"); tbl.Open(); if(tbl.IsBOF()) { AfxMessageBox("Keine entsprechenden Daten vorhanden!"); tbl.Close(); } tbl.Edit(); //in der nächsten zeile bricht er ab und bringt folgende fehlermeldung: //CLI0150E Der Treiber unterstützt die Operation nicht. //SQLSTATE=S1C00 tbl.FELD3 = var3; tbl.Update(); tbl.Close(); AfxMessageBox("Daten wurden aktualisiert!"); ... in meinem anderen projekt geht das aber so... allerdings mit MySQL über ODBC V 3.5 ... der DB zugriff erfolgt automatisch durch SDI... wie könnt ich das manuell machen, dass ich ohne ODBC direkt auf die entsprechende DB zugreif? ich weiß langsam nicht mehr weiter!! *wink* Thias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thias78 Geschrieben 6. Juni 2003 Autor Teilen Geschrieben 6. Juni 2003 :marine mich hats gefindet!!! (O: hallo leutz!! und danke nochmal!!!!! ich habs gestern gefunden... hier die lösung: DB2 mag anscheinend die zuweisung über Recordsets nicht!!! Mein Problem war allerdings, dass ich mir das selbst lernen musste und mir dafür ein anscheinend nicht sonderlich geeignetes Buch hierfür zur Verfügung stand/steht... in diesem Buch war nicht erklährt oder auch nur erwähnt, dass Zugriffe auch über "ExecuteSQL()" erfolgen können... da bin ich erst gestern dahinter gestiegen, wie das über diesen Befehl funzt... denn die Beschreibungin der C++ Onlinehilfe lässt, wie ich finde, auch etwas zu wünschen übrig!!! naja... wie auch immer.... jetzt funzt es... und ich darf mein ganzes projekt umschreiben... dürfte 4 oder 5 tage arbeit bedeuten... (O: danke nochmal fürs helfen!!! *wink* Thias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.