PDA

View Full Version : ایجاد یک فیلد با ترکیب دو فیلد بدون استفاده ازQuery



ali_abbasi22145
یک شنبه 27 اسفند 1385, 11:49 صبح
سلام

ایجاد یک فیلد با ترکیب دو فیلد مثل: full_name:=firist_name+' '+last_name بدون استفاده ازQuery

با دابل کلیک روی table پروپرتی ان که در عکس دیده می شود باز می شود به نظر می رسد که می شود دو فیلد را به هم چسپاند مثل: full_name:=firist_name+' '+last_name
اگر اینطور باشد یا چیزی شبیه این و بتوان یک فیلد از ترکیب دو فیلد بسازیم مشکلم حل شده است.

m-khorsandi
یک شنبه 27 اسفند 1385, 12:42 عصر
یک فیلد از نوع Calculate بساز،
بعد در رویداد OnCalcFields، مقدار مجموع فیلدهایی که لازم داری رو در فیلد Calcیی که ساختی قرار بده.

ali_abbasi22145
یک شنبه 27 اسفند 1385, 16:39 عصر
یک فیلد از نوع Calculate بساز،
بعد در رویداد OnCalcFields، مقدار مجموع فیلدهایی که لازم داری رو در فیلد Calcیی که ساختی قرار بده.

سلام
من هرچه گشتم رویداد OnCalcFields همانطور که درعکس می بینید ندیدم!
اگر می توانید بیشتر توضیح بدهید و عکس آن اینجا بگذارید بینهایت متشکر می شوم.

ghabil
یک شنبه 27 اسفند 1385, 17:49 عصر
سلام
من هرچه گشتم رویداد OnCalcFields همانطور که درعکس می بینید ندیدم!
اگر می توانید بیشتر توضیح بدهید و عکس آن اینجا بگذارید بینهایت متشکر می شوم.

OnClaclFields ماله دیتاست هست، این یک مثال (http://www.barnamenevis.org/forum/showthread.php?t=62859)

ali_abbasi22145
یک شنبه 27 اسفند 1385, 19:23 عصر
OnClaclFields ماله دیتاست هست، این یک مثال (http://www.barnamenevis.org/forum/showthread.php?t=62859)

سلام و تشکر فراوان
Calculation را با کمک آقای m-khorsandi درست کردم (قبل مثال دوست دیگرمان)!

من یک full_name درست کردم به شکل زیر ودر عکس calc1 درست شده را می بینید AMIR SALEHI:
ADOTable1.FieldByName('first_name').AsString+
' '+ADOTable1.FieldByName('last_name').AsString

حال یک فایل text درست کردم که کاربر Calculation (calc2) را بخواهد دستور عمل پاسکال را در آن فایل text بنوسید که مثلا نام را با نام پدر بچشباند و برنامه از ان بخواند و با دستور عمل انرا خواندم ولی به شکل AMIR HASSAN نام ونام پدر را به هم نچسپاند بلکه همان دستورالعمل را آورد:
ADOTable1.FieldByName('first_name').AsString+
' '+ADOTable1.FieldByName('father_name').AsString

من فکر می کنم باید متغیر calc2 به فرمت دیگر تبدیل کنم تا آنرا به صورت دستورالهمل بگیر نه به صورت String آن متغیر
نامش چیست؟
یا با چه تابعی String را به آن متغیر تبدیل کنم؟

Valadi
دوشنبه 28 اسفند 1385, 07:14 صبح
جناب آقای علی عباسی اگر امکان داره سورس همین بحث در این جا قرار بده

حرفه ای
دوشنبه 28 اسفند 1385, 07:30 صبح
دوست خوبم :چشمک:

بعد از ایجاد یک فیلد از نوع Calculated در رویداد OnGetText کد زیر را بنویس


procedure TForm1.ADOTable1TestGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text:=AdoTable1.Fields[0].Text+' '+AdoTable1.Fields[1].Text;
end;

ghabil
دوشنبه 28 اسفند 1385, 12:57 عصر
من فکر می کنم باید متغیر calc2 به فرمت دیگر تبدیل کنم تا آنرا به صورت دستورالهمل بگیر نه به صورت String آن متغیر
نامش چیست؟
یا با چه تابعی String را به آن متغیر تبدیل کنم؟

همچین تعریف فیلدی (Expresion)در دلفی نداریم (در QuickReport داریم) برای این کار میتونید اسم دوتا فیلد رو بصورت متغییر گلوبالا یا توی کلاس نگه دارید و مثلا با آوردن یک فرم اسم دوتا فیلد رو از کاربر بگیرید و بعد کد رو به شکل زیر بنویسید :



DataSet.FieldByName('CalcField').AsString := DataSet.FieldByName(TheFirstField).AsString + DataSetFieldByName(TheSecondField).AsString;


که قبل از نمایش گزارشت مثلا یک همچین کدی نوشتی :


TheFirstField := Ed_FirstField.Text;
TheSecondField := Ed_SecondtField.Text;

که این دوتا ادیتباکس اسم فیلدهارو گرفتن.



دوست خوبم :چشمک:

بعد از ایجاد یک فیلد از نوع Calculated در رویداد OnGetText کد زیر را بنویس


procedure TForm1.ADOTable1TestGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text:=AdoTable1.Fields[0].Text+' '+AdoTable1.Fields[1].Text;
end;


برای تعیین مقادیر فیلدهای Calculated رویداد OnCalcFields پیشبینی شده رویداد OnGetText استفاده دیگری داره، ضمنا سوال چیزه دیگه ای بود.

ali_abbasi22145
سه شنبه 14 فروردین 1386, 12:16 عصر
همچین تعریف فیلدی (Expresion)در دلفی نداریم (در QuickReport داریم) برای این کار میتونید اسم دوتا فیلد رو بصورت متغییر گلوبالا یا توی کلاس نگه دارید و مثلا با آوردن یک فرم اسم دوتا فیلد رو از کاربر بگیرید و بعد کد رو به شکل زیر بنویسید :



DataSet.FieldByName('CalcField').AsString := DataSet.FieldByName(TheFirstField).AsString + DataSetFieldByName(TheSecondField).AsString;


که قبل از نمایش گزارشت مثلا یک همچین کدی نوشتی :


TheFirstField := Ed_FirstField.Text;
TheSecondField := Ed_SecondtField.Text;

که این دوتا ادیتباکس اسم فیلدهارو گرفتن.




برای تعیین مقادیر فیلدهای Calculated رویداد OnCalcFields پیشبینی شده رویداد OnGetText استفاده دیگری داره، ضمنا سوال چیزه دیگه ای بود.

سلام
اتفاقا برای گزارشگیری برای REPORTBUILDER 10 Pro که من خریداری کردهام را می خواهم و نسخه های Enterprise , Server این امکان را دارند.

ali_abbasi22145
سه شنبه 14 فروردین 1386, 12:36 عصر
سلام
اتفاقا برای گزارشگیری برای REPORTBUILDER 10 Pro که من خریداری کرده ام را می خواهم و نسخه های Enterprise , Server این امکان را دارند.