Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Field Value Required in RAD 2007 Delphi mit MYSQL (https://www.delphipraxis.net/110979-field-value-required-rad-2007-delphi-mit-mysql.html)

hirsch 27. Mär 2008 15:43

Datenbank: MYSQL • Version: 5 • Zugriff über: dbxmys30.dll

Field Value Required in RAD 2007 Delphi mit MYSQL
 
Tage lang versuche ich nur ein Integer-Feld (Pickstatus, länge 10, vorbelegt mit 0) zu ändern.
Der Konstrukt ist klar: Datenbank(TSQLConnection) -> SDS(TSQLDataset) -> DSP(TDataSetProvider) -> CDS (TClientDataSet) ->DS(TDataSource) für das Grid.
Es soll so sein, dass wenn im Grid auf ein Datensatz geklickt wird, dessen Feld PickStatus auf 5 (Variable:= loe) verändert werden soll.
Jedoch bekomme ich beim Post immer 'Field Value required'. Ich hab volle Schreib/Leserechte auf die Datenbank.
Der Code:
Delphi-Quellcode:
procedure TPickStatus.GridCellClick(Column: TColumn);
var loe: integer;
begin
loe:=5;
     ID_i:=datamodule1.cds.FieldByName('ID').value;
     with datamodule1.SDS do
     begin
          if Active then Active:=False;
          SQL_str:='select * from Packingstructure where ID= '+IntToStr(ID_i);
          CommandText:=SQL_str;
          Active:=True;

          with DataModule1.CDS do
          begin
            ShowMessage(IntToStr(RecordCount)); //Nur zum Testen
            if Recordcount >= 1 then
            begin
                 Active:=True;
                 Edit;
                 FieldbyName('PickStatus').value:=loe;
                 Post;
                 ApplyUpdates(-1);
            end
            else
            begin
                 ShowMessage('<> 1 Satz Anz: '+IntToStr(RecordCount));
                 exit;
            end;
          end;
     end;

end;
Nun, ich bin ein bloddy beginer, also habt bitte nachsicht mit mir....
Was will mir die Fehlermeldung sagen?
Ich danke für Eure Ideen......

hirsch 2. Apr 2008 07:23

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Ohjeeeeeeeee
hat den Niemand eine Idee?? :wall: :wall:

mkinzler 2. Apr 2008 07:32

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Statt
Delphi-Quellcode:
if Active then Active:=False;
kannst du einfach
Delphi-Quellcode:
Close;
schreiben.
Delphi-Quellcode:
                 Active:=True;
                 Edit;
                 FieldbyName('PickStatus').value:=loe;
                 Post;
                 ApplyUpdates(-1);
ist nicht eindeutig
hier besser ohne with arbeiten und das DataSet mit angeben.

hirsch 4. Apr 2008 10:06

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Hallo mkinzler,
vielen Dank für die Idee.
Hab nun alles explizit geschriefen, ohne die with anweisung.
Leider kommt der gleiche Fehler immer noch.
Für den <CLOSE> - Tipp hab ich auch gemacht.
Ich hab ja nun schon viel gegoogelt nach dem Fehler, also er scheint ja oft vorzukommen, nur eine Lösung war keine dabei.

Delphi-Quellcode:
     if Datamodule1.CDS.Recordcount = 1 then
     begin
          Datamodule1.CDS.Edit;
          Datamodule1.CDS.FieldbyName('PickStatus').value:=5;
          Datamodule1.CDS.Post;  //<< Field value required kommt hier bei Post
          Datamodule1.CDS.ApplyUpdates(-1);
     end
     else
     begin
          ShowMessage('<> 1 Satz Anz: '+IntToStr(Datamodule1.CDS.RecordCount));
          exit;
     end;

RavenIV 4. Apr 2008 12:12

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Für welches Feld kommt "Field value required"?
Vermutlich hast Du in der Tabelle ein Feld definiert, das "Not NULL" (also nicht leer) sein darf.
Diesem Feld musst Du dann natürlich vor dem Post einen Wert zuweisen.

hirsch 4. Apr 2008 12:23

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Hallo RavenIV,

das Feld PICKSTATUS ist vorhanden und mit einer anderen Zahl als 5 gefüllt, z.b. mit 1 oder 2 oder 3 oder 4.
Ich selektiere anhand der ID den Datensatz und will den Wert 5 reinschreiben was ich ja meiner meinung nach mache mit:
Delphi-Quellcode:
Datamodule1.CDS.FieldbyName('PickStatus').value:=5;
:wall:

RavenIV 4. Apr 2008 12:28

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Mir ist aufgefallen, dass Du einmal mit datamodule1.SDS und dann mit DataModule1.CDS arbeitest.
Ist das so gewollt?

Ausserdem solltest Du Dich entscheiden, ob Du Gross-/Kleinschreibung verwendest oder nicht.

hirsch 4. Apr 2008 12:36

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Ok, RavenVI


oben steht der Konstukt:


Datenbank(TSQLConnection) -> SDS(TSQLDataset) -> DSP(TDataSetProvider) -> CDS (TClientDataSet) ->DS(TDataSource) für das Grid.

SDS verbunden auf Datenbank
DSP verbunden auf SDS
CDS verbunden auf DSP
DS verbunden auf CDS

An der GROSS und kleinschreibung übe ich noch, hast schon recht, aber ich glaube der Compiler will das nicht wissen...

hirsch 8. Apr 2008 10:47

Re: Field Value Required in RAD 2007 Delphi mit MYSQL
 
Ok, ich habs selber rausgefunden.

Der Fehler war, dass in dem Datensatz andere leere Integerfelder gab.
Nun ich dachte wohl nicht daran, dass Delphi immer den ganzen Datensatz schreibt, obwohl ich nur die betreffende Spalte geändert hatte.
Nun, ohne viel probieren wäre ich da nicht drauf gekommen.

Trotzdem allen hier vielen Dank für die Tipps.
:firejump:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 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