ورود

View Full Version : جایگزینی اطلاعات خاص بر اساس اطلاعات بانک در dbgrid



hamid-nic
پنج شنبه 23 مهر 1388, 14:06 عصر
سلام و وقت بخیر خدمت دوستان

من از کامپوننت sdac برای اتصال به بانک و جداول و کوئری ها استفاده می کنم .

برای نمایش اطلاعات هم از dbgrid استفاده می کنم .

کوئری نوشتم که اجرا می کنم و اطلاعات آن در dbgrid نمایش داده می شود .

می خواهم به جای یکی از فیلد ها به جای اینکه اطلاعات را مستقیم نمایش دهد یک پردازشی انجام دهد که اگر اون فیلد مقدار داشت حرف * (ستاره ) را درج در غیر این صورت اگر مقدار اون فیلد خالی (null) بود هیچ چیزی درج نکند . امیدوارم منظورم را رسانده باشم .

دوستان راهنمایی کنید .

Asiapardaz
پنج شنبه 23 مهر 1388, 14:18 عصر
در حالت کلی و با استفاده از ADO می توانید یک فیلد محاسباتی (مثلا FildCalc) ایجاد نموده و از دستورات زیر برای رسیدن به هدفتان استفاده کنید .

برای این منظور از CalcFields استفاده کنید :



Procedure AdoQuery1CalcFields(DataSet: TdataSet);
begin
if AdoQuery1.FieldByName('FildName').AsString = 'Sample' then
AdoQuery1.FieldByName('FildCalc').AsString := '*' else
AdoQuery1.FieldByName('FildCalc').AsString := '';
end;

vcldeveloper
پنج شنبه 23 مهر 1388, 14:49 عصر
در حالت کلی و با استفاده از ADO می توانید یک فیلد محاسباتی (مثلا FildCalc) ایجاد نموده و از دستورات زیر برای رسیدن به هدفتان استفاده کنید .
ارتباطی به ADO نداره، همه Datasetهای دلفی فارغ از اینکه از چه روشی برای اتصال به بانک استفاده می کنند، می توانند فیلدهای Calculated یا Lookup داشته باشند.


می خواهم به جای یکی از فیلد ها به جای اینکه اطلاعات را مستقیم نمایش دهد یک پردازشی انجام دهد که اگر اون فیلد مقدار داشت حرف * (ستاره ) را درج در غیر این صورت اگر مقدار اون فیلد خالی (null) بود هیچ چیزی درج نکند .
اگر قرار هست مقدار جایگزین از یک جدول در بانک اطلاعاتی خوانده بشه، می تونید از فیلد Lookup استفاده کنید.
اگر قرار هست پردازش در برنامه انجام بشه، می تونید یا از فیلد Calculated استفاده کنید، یا از رویدادهای OnGetText و OnSetText مربوط به فیلد مورد نظرتان برای تغییر نحوه نمایش محتویات آن، استفاده کنید.

AmirSky
دوشنبه 27 مهر 1388, 18:10 عصر
اگر از Query استفاده می کنی نیازی به CalcFields نیست.
بجاش می تونی از دستور Case توی SQL استفاده کنی.
مثل این


SELECT *,
CASE
WHEN Field1 IS NULL THEN Null
WHEN Field1 is Not NULL THEN '*'
END AS New
FROM Tabel1