![]() |
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:
Nun, ich bin ein bloddy beginer, also habt bitte nachsicht mit mir....
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; Was will mir die Fehlermeldung sagen? Ich danke für Eure Ideen...... |
Re: Field Value Required in RAD 2007 Delphi mit MYSQL
Ohjeeeeeeeee
hat den Niemand eine Idee?? :wall: :wall: |
Re: Field Value Required in RAD 2007 Delphi mit MYSQL
Statt
Delphi-Quellcode:
kannst du einfach
if Active then Active:=False;
Delphi-Quellcode:
schreiben.
Close;
Delphi-Quellcode:
ist nicht eindeutig
Active:=True;
Edit; FieldbyName('PickStatus').value:=loe; Post; ApplyUpdates(-1); hier besser ohne with arbeiten und das DataSet mit angeben. |
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; |
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. |
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:
:wall:
Datamodule1.CDS.FieldbyName('PickStatus').value:=5;
|
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. |
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... |
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 16:21 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