ورود

View Full Version : درج مقدار Null در فیلد عددی



naderanhari
شنبه 05 آذر 1390, 18:07 عصر
دستور SQL زیر را دارم که فیلد Code1 از نوع Integer میباشد که مقدار آنرا از جدول دیگر می آورم. میخواهم در هر شرایطی این کد کار کند یعنی اگر مقدار فیلد Null هم باشد با کوتاهترین کد SQL دستور اجرا شود. فرض کنید بخواهیم این مقداردهی را برای 10 فیلد عددی انجام دهیم. کوتاهترین کد چه میتواند باشد بدون اینکه مقدار فیلدها را قبلا چک کنیم که Null هست یا نه. بعبارتی دیگر اگر بتوانیم مقدار عددی را اگر عدد باشد عدد و اگر خالی باشد Null را قرار دهیم.

MySQL := 'Insert Into MyTable ' +
'(' + 'Code1, Code2' + ')' + ' Values ' +
'(' + Table2.FieldByName('Field1').AsString + ',' +
Table2.FieldByName('Field2').AsString + ')';

naderanhari
دوشنبه 07 آذر 1390, 16:29 عصر
بعد از چند روز خودم به خودم جواب میدم:
یه تابع بنویس که مقدار رو چک کنه و مقدار صحیح را برای متن SQL برگردونه. مثل زیر:

function GetNumberValueForSQL( Value: Variant ): String;
begin
if (VarToStr(Value) = '') then
begin
Result := 'Null';
end
else
begin
Result := VarToStr( Value );
end;

end;


بعد از اون استفاده کن:

MySQL := 'Insert Into MyTable ' +
'(' + 'Code1, Code2' + ')' + ' Values ' +
'(' + GetNumberValueForSQL(Table2.FieldByName('Field1'). Value) + ',' +
GetNumberValueForSQL(Table2.FieldByName('Field2'). Value) + ')';