PDA

View Full Version : سوال: در بانك SQL حالتAlloNullsرا براي فيلد شماره كارمندي فعال مي كنم اگر فاصله خالي بزنم امکان ذخیره ندهد



ali_abbasi22145
دوشنبه 20 مهر 1388, 20:53 عصر
سلام
ضمنا من با ADO دلفي 7 به SQL server 2000 وصل مي شوم.
من دستور زير را در رويداد BeforePost نوشتم كه اولا : باگ ذخيره نشدن DBCombobox درست شود كه اين عالي كار مي كند.
ثانيا: فاصله هاي خالي تايپ شده حذف كند.
حال من كه در بانك SQL حالت AlloNulls را براي فيلد شماره كارمندي فعال مي كنم اگر فاصله خالي يك يا چندتا بزنم مي گيرد و خطاي AlloNulls مخصوص SQL Server كه جلوي ذخيره يك ركورد بدون شماره كارمندي را نمي دهد!


procedure TMainForm.ADOTable1BeforePost(DataSet: TDataSet);
begin

with DynamicForm do
begin
Fixed bug do not save when open photo,...for DBCombobox
for i := 0 To ComponentCount-1 Do
begin
If Components[i] is TDBCombobox Then
If not( TDBCombobox(Components[i]).Field.IsNull ) Then
TDBCombobox(Components[i]).Field.Value := Trim(TDBCombobox(Components[i]).Text);

If Components[i] is TDBEdit Then
If not( TDBEdit(Components[i]).Field.IsNull ) Then
TDBEdit(Components[i]).Field.Text := Trim(TDBEdit(Components[i]).Text);

//If Components[i] is TDBMemo Then //!!! Because often show Access Violation error
//TDBMemo(Components[i]).Field.Text := Trim(TDBMemo(Components[i]).Text);
end;// end for
end;//end with

end;

DataMaster
دوشنبه 20 مهر 1388, 23:29 عصر
فكر كنم ميتوني خيلي راحت تر از DBMaskEdit استفاده كني و اين همه الاف كد نشي
در ضمن شما وقتي فضاي خالي ميزني تو ديتابيس به عنوان عدد ذخيره نميشه پس در نتيجه Null دخيره ميشه

ali_abbasi22145
سه شنبه 21 مهر 1388, 08:37 صبح
فكر كنم ميتوني خيلي راحت تر از DBMaskEdit استفاده كني و اين همه الاف كد نشي
در ضمن شما وقتي فضاي خالي ميزني تو ديتابيس به عنوان عدد ذخيره نميشه پس در نتيجه Null دخيره ميشه
سلام
If not( TDBCombobox(Components[i]).Field.IsNull ) Then
همانطور كه قبلا گفتم با دستور بالا جلوي ذخيره Null را به خوبي مي گيرد.
اگر كاربر يك يا چند فاصله خالي تايپ كند آن فاصله خالي ذخيره مي شود كه نمي نمي خواهم ذخيره شود!