AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler beim speichern geänderter Memofelder
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler beim speichern geänderter Memofelder

Ein Thema von Kalli · begonnen am 27. Jun 2005 · letzter Beitrag vom 4. Jul 2005
Antwort Antwort
Kalli

Registriert seit: 12. Jun 2003
Ort: Landau i.d. Pfalz
79 Beiträge
 
Delphi 2005 Enterprise
 
#1

Fehler beim speichern geänderter Memofelder

  Alt 27. Jun 2005, 08:24
Datenbank: DB2 • Version: 7 • Zugriff über: dbGo / dbExpress
Hallo,
ich hab ein Problem, dass ich seit Tagen nicht gelöst bekomme.

Delphi 2005 und DB2

Egal, welche Anbindung ich nutze (ADO, SQL ...), beim Abspeichern eines Datensatzes mit
einem geänderten Memofeldinhalt (CLOB oder Long VarChar) bekomme ich folgende Fehlermeldung:


---------------------------
Project1
---------------------------
CLI0100E Falsche Parameteranzahl. SQLSTATE=07001.
---------------------------
OK
---------------------------

Auf der Seite von IBM habe ich gelesen, dass dieser Fehler eigentlich mit dem Abspeichern
von Datensätzen nichts zu tun haben kann.


---------------------------

CLI0100E Falsche Parameteranzahl.

Ursache: Die Anzahl der Parameter, die in SQLSetParam oder SQLBindParameter angegeben
wurden, war geringer als die Anzahl der Parameter in der SQL-Anweisung.

Aktion: Die SQL-Anweisung erneut angeben oder über SQLSetParam oder SQLBindParameter
mehr Eingabeparameter zur Verfügung stellen.

---------------------------


Was mache ich falsch?

Kalli
Karl Josef Ziller
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Fehler beim speichern geänderter Memofelder

  Alt 1. Jul 2005, 06:23
Hallo Kalli,

wenn du dein Problem noch nicht lösen konntest, dann poste doch mal, WIE du das Update angehst. Wie sieht dein SQL Statement aus?

Grüße vom marabu
  Mit Zitat antworten Zitat
Kalli

Registriert seit: 12. Jun 2003
Ort: Landau i.d. Pfalz
79 Beiträge
 
Delphi 2005 Enterprise
 
#3

Re: Fehler beim speichern geänderter Memofelder

  Alt 1. Jul 2005, 17:57
Hallo marabu,
die Anweisungen sind furchtbar primitiv. Nachdem das in meiner Anwendung zu Problemen führte, habe ich eine Mini-Anwendung zusammengeclickt.
SQL-Code:
CREATE TABLE VD.MEMO (
"VERMNR" VARCHAR (10) ,
"NAME" VARCHAR (30) ,
"BEMERKUNG" LONG VARCHAR )
erstellt mir die Tabelle zum Testen. Über ADODataset mit der Anweisung "select * from VD.MEMO" rufe ich die Daten ab. Der Cursor von ADOConnect steht auf Client.

Auf einer 'Form' sind zwei DBEditfelder für VERMNR und NAME sowie ein DBMemo für BEMERKUNGEN. Zum Steuern benutze ich einen DBNavigator.

Trage ich eine VermNr und den Namen ein, kann ich den Datensatz mit dem DBNavigator abspeichern und fertig. Sobald ich aber ein Zeichen im Memofeld eintrage und speichern will, kommt die besagte Fehlermeldung.

Im Moment behelfe ich mir mit einem Umweg:
Ich lade den Text in ein Memofeld und schreibe es zurück in die Tabelle.
.
Delphi-Quellcode:
procedure TForm1.MemoSpeichern;
// SQL-Anweisung in einem ADOCommand: Update VD.VERM01 set BEMERKUNG = :BM where VERMNR = :Nr
var
  NR : String;
begin
  nr := ADODataSet1VERMNR.Text;
  ADOCommand1.Parameters.ParamByName('BM').Assign(Memo1.Lines);
  ADOCommand1.Parameters.ParamByName('NR').Value := Nr;
  ADOCommand1.Execute;
  ADODataSet1.Requery([]);
  ADODataSet1.Locate('VERMNR',Nr,[]);
end;
.


Gruß
Kalli

[edit=alcaeus]sql- und delphi-Tags eingefuegt. Mfg, alcaeus[/edit]
Karl Josef Ziller
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Fehler beim speichern geänderter Memofelder

  Alt 2. Jul 2005, 18:41
Hallo Kalli,

ich habe leider keinen Zugriff auf DB2 v7 - ich habe DB2 UDB DPE v8.1.9.700 auf meiner Maschine installiert und die SAMPLE Datenbank erzeugen lassen. Ich habe meinen Test mit der Tabelle EMP_RESUME gemacht, die ein BLOB Feld enthält. Was soll ich sagen - alles funktioniert. Habe ADOConnection eingerichtet, eine ADOQuery mit "select * from user.emp_resume" angefüttert, ein DBGrid mit DBNavigator, zwei DBEdits und ein DBMemo auf eine Form gepackt. Meine Änderungen im DBMemo werden ohne Fehler angenommen. Hätte ich auch so erwartet - du aber auch, wenn ich das richtig sehe.

Vielleicht solltest du ein Upgrade in Erwägung ziehen? Vielleicht gibt es einen aktualisierten Treiber? Hast du dein simples Test-Scenario mal umgestellt auf OLE für ODBC und geschaut was dann passiert?

marabu
  Mit Zitat antworten Zitat
REMOLUS

Registriert seit: 4. Jul 2005
1 Beiträge
 
#5

Re: Fehler beim speichern geänderter Memofelder

  Alt 4. Jul 2005, 14:03
Hallo zusammen,

auf der UDB2 funktioniert es wohl,
aber anhand der Fehlermeldung gehe ich davon aus, dass
dies eine DB2 auf einer As400 oder iseries ist gell?

UDB2<> DB2 AS400 !!

Habe da leider entsprechende Erfahrungen gemacht.
Zum Thema ich hatte letzte Woche das gleiche Problem.
Greife mit DBExpress/D7.01/ und den AS400 Treiber von
Peter Sawatzki auf die Datenbank zu.


http://www.sawatzki.de

Lösung 1:
Server Patchen
(V5R3 PTF SI18398)

Fix für dieses Problem.

ftp://ftp.software.ibm.com/as400/pro...5r3m0/servicep
ack/si18398


oder

Lösung 2:
...
wenn Sie V5R3 einsetzen kann ich Ihnen auch den Fix geben, den IBM mir vorab
gab, als das PTF noch nicht erhältlich war bzw. die betreffende Datei aus
V5R3. Im Client Access/iSeries Access in cwbdb.dll ist eine
Warnungssituation nicht korrekt abgehandelt, die in der Folge dazu führt,
dass fälschlich die API bestimmte Attribute ignoeriert. Dies wirkt sich u.a.
auch auf LOBs aus.

Siehe hierzu den Auszug aus den Fixes von PTF SI18398:

" APAR SE19493: CA400EXP-INCORROUT CWBDB APIs not using extended formats
The customer's application uses the cwbDB APIs. If a general
server warning (return code 6407) occurs when cwbDB_StartServer
is called, the cwbDB APIs fail to set the "use extended formats"
in the initial server attributes. This results in errors or
incorrect behavior when executing statements that require the
extended formats. Errors could include incorrect handling of
LOB data, incorrect handling of the ROWID data type, and
incorrect handling of any other type of data that requires the extended
formats.

CIRCUMVENTION:
Examine the host server job (QZDASOINIT) joblog for warnings and
errors that occur when your connection is opened. Take action
to ensure the warnings or errors are resolved and no longer occur.
"

PS: Mit der BDE hat der Zugriff ohne den Patch funktioniert.

Alles ohne Gewähr.

Bei läuft jetzt Lösung 2 ohne Probleme.

Gruss Remolus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz