Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADOCommand - Update Table (https://www.delphipraxis.net/34661-adocommand-update-table.html)

schuetze09 26. Nov 2004 08:15


ADOCommand - Update Table
 
Hallo,

ich will mit AdoCommand ein Update machen, leider bekomme ich eine Fehlermeldung:

SQL-Code:
ORA-01401: inserted value too large for column
wenn ich aber das gleiche Statement nicht in der Anwendung ausführe, sondern ganz normal, funktioniert es.
Hier mal das ADOCommand:
Delphi-Quellcode:
with ADOCommand do
      begin
        CommandType:=cmdText;
        CommandText:='update tbl_umgebung '
                     +' set env= '
                     + QuotedStr(Umgebung)
                     +' , beschreibung= '
                     + QuotedStr(Beschreibung)
                     +' where env ='
                     + QuotedStr(Umgebung);

        Execute;
        Screen.Cursor:=crDefault;
      end;
Das SQL-Statement:
SQL-Code:
update tbl_umgebung set env= 'y4' , beschreibung= 'Batch HF-Test (n+1)                                                                                                                                                                                                                                          ' where env ='y4'
Woran liegt das bloß?

MfG
schuetze09

Stevie 26. Nov 2004 08:35

Re: ADOCommand - Update Table
 
Moin,

welchen Datentyp haben die Spalten?

Würde nicht folgendes reichen? Das Feld env ist ja schon 'y4'!
SQL-Code:
update tbl_umgebung set beschreibung= 'Batch HF-Test (n+1)' where env ='y4'

schuetze09 26. Nov 2004 08:44

Re: ADOCommand - Update Table
 
@Stevie:
geht leider auch nicht.
Die Felder sind vom Typ CHAR.

mfg
schuetze09

Stevie 26. Nov 2004 09:32

Re: ADOCommand - Update Table
 
Datenbank??

schuetze09 26. Nov 2004 09:41

Re: ADOCommand - Update Table
 
ORACLE

Stevie 26. Nov 2004 10:06

Re: ADOCommand - Update Table
 
Also ORA-01401 kommt, wenn du einen Text einfügen willst, der zu lang ist, sagt er ja... ;-)
Frage: Wie viele Zeichen passen in das Feld beschreibung?
Vermutung: Wenn du den Befehl so ausführst, wird ohne Fehler der zu lange Teil abgeschnitten.
Bei Oracle sollte man ohnehin eher VARCHAR2 benutzen...

clues1 26. Nov 2004 10:11

Re: ADOCommand - Update Table
 
Zitat:

inserted value too large for column
mhh, sieht wirklich danach aus, das du einfch nur dein Char Feld zu kurz angegeben hast.

Wenn du das hier so ausführst wie du das kopierst hast, hätte selbst ein 255 Langes Feld nicht gereicht:

Code:
update tbl_umgebung set env= 'y4' , beschreibung= 'Batch HF-Test (n+1)                                                                                                                                                                                                                                          ' where env ='y4'
Schaumal Beschreibung = 'Text
Mit enter und
viele leere Zeichen
' where env.... = > 255 Zeichen. Mache mal die Leerzeichen zwischen (n+1) und ' weg.

Du hast da 2 Zeilenumbrüche drinn.

Stevie 26. Nov 2004 10:15

Re: ADOCommand - Update Table
 
Zitat:

Zitat von clues1
Zitat:

inserted value too large for column
mhh, sieht wirklich danach aus, das du einfch nur dein Char Feld zu kurz angegeben hast.

Wenn du das hier so ausführst wie du das kopierst hast, hätte selbst ein 255 Langes Feld nicht gereicht:

Code:
update tbl_umgebung set env= 'y4' , beschreibung= 'Batch HF-Test (n+1)                                                                                                                                                                                                                                          ' where env ='y4'
Schaumal Beschreibung = 'Text
Mit enter und
viele leere Zeichen
' where env.... = > 255 Zeichen. Mache mal die Leerzeichen zwischen (n+1) und ' weg.

Du hast da 2 Zeilenumbrüche drinn.

Nee, das dürfte nur hier im Beitrag so sein. Das funkioniert ja nicht:
Zitat:

Zitat von schuetze09
Delphi-Quellcode:
with ADOCommand do
      begin
        CommandType:=cmdText;
        CommandText:='update tbl_umgebung '
                     +' set env= '
                     + QuotedStr(Umgebung)
                     +' , beschreibung= '
                     + QuotedStr(Beschreibung)
                     +' where env ='
                     + QuotedStr(Umgebung);

        Execute;
        Screen.Cursor:=crDefault;
      end;


schuetze09 26. Nov 2004 11:08

Re: ADOCommand - Update Table
 
Also das Feld Env ist ein CHAR(2) , Beschreibung ist CHAR(255).
auf der DB direkt mit dem OraTool funkioniert es, also das update.

MfG
schuetze09

Stevie 26. Nov 2004 11:31

Re: ADOCommand - Update Table
 
Hast du schonmal folgendes versucht?
Delphi-Quellcode:
with ADOCommand do
begin
  CommandType:=cmdText;
  CommandText:='update tbl_umgebung set beschreibung = :1 where env = :2';
  Parameters[0].Value := Beschreibung;
  Parameters[1].Value := Umgebung;
  Execute;
end;

schuetze09 26. Nov 2004 11:44

Re: ADOCommand - Update Table
 
kommt leider die gleiche Fehlermeldung...

langsam krieg ich ne Krise, ich verstehe nicht, warum das SQL-Statement am Prompt funktioniert und in/mit Delphi nicht!!!....???

MfG
schuetze09

Stevie 26. Nov 2004 11:54

Re: ADOCommand - Update Table
 
Kannst du mir mal die Anwendung und dein Tabellenscript schicken?
Dann guck ich's mir mal an.

schuetze09 26. Nov 2004 12:35

Re: ADOCommand - Update Table
 
:) mein Problem hat sich gelöst!!!
ich habe nachdem ich feststellte, dass die Werte die ich in ENV und BESCHEIBUNG hatte immer riesig groß waren,
einfach den Datentyp von CHAR auf VARCHAR geändert, jetzt geht es.

MfG
schuetze09

PS: Danke für eure Bemühungen...

schuetze09 26. Nov 2004 12:44

Re: ADOCommand - Update Table
 
Aber leider sind am Ende des übergebene Strings immer noch zwei || zu sehen :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz