PDA

View Full Version : سوال: محاسبه فیلدهی جدول detail و درج در رکورد جدول master مربوطه



namionlinne
چهارشنبه 12 خرداد 1389, 08:07 صبح
سلام مجدد به دوستان عزیز
من یه مشکل دیگه هم دارم. اونم اینه که میخوام فیلدهای قیمت یه جدول دیتیل رو جمع بزنم بزارم تو فیلد مجموع قیمت رکورد مستر مربوطش.
میشه لطفا راهنماییم کنید

mehdimdp
چهارشنبه 12 خرداد 1389, 09:14 صبح
سلام
اصولا کار شما اشتباهه
شما باید از کوئری استفاده کنی که فیلد جمع رو با استفاده از تابع sum بدست میاری .
اگه کوئریشو میخای یه نمونه از جداولت بذار کوئریشو برات مینویسم

حسین شهریاری
چهارشنبه 12 خرداد 1389, 09:22 صبح
این یه روش هست.من چون نمیدونستن شما چند تا فیلد را میخاین جمع کنین یه نمونه براتون مثال زدم.در ضمن شما بنا بر کارتون میتوننین توی کوئری شرط هم قرار بدید.(مثلا بر حسب کد):


AdoQuery.sql.text:='select sum(price) as sumer from Detail';
AdoQuery.close;
AdoQuery.open;


بعد از محاسبه توی جدولی که میخاین درجش کنین.


AdoTable.insert;
AdoTable.fieldbyname(sumprice).asinteger:=AdoQuery .fieldbyname(sumer).asinteger;
AdoTable.post;

namionlinne
چهارشنبه 12 خرداد 1389, 11:41 صبح
در نظر بگیرید که جدول دیتیل این فیلد ها رو داره :
1- نام کالا
2- قیمت واحد
3- تعداد کالا
4- مجموع قیمت کالا (تعداد * قیمت واحد)

در جدول مستر هم فیلدی هست که مجموع قیمت کل (یعنی مجموع کل فیلد شماره 4 در تمام رکوردهای مربوطه) را محاسبه کنه

لطفا برای محاسبه جمع کل اقلام در جدول دیتیل مربوط به یک رکورد در جدول مستر راهنمایی کنید.
با تشکر

----------------------
من این کد رو توی برنامه گذاشتم:


DataModule2.ADOQOrd.sql.text:= 'select sum(ORd_TotalItmPrice) as ORd_TotalPrice from Orders' ;
DataModule2.ADOQOrd.close;
DataModule2.ADOQOrd.open ;
edit1.text := DataModule2.ADOQOrd.fieldbyname('Ord_TotalPrice'). AsString;



(فیلد ORd_TotalItmPrice : قیمت کالا * تعداد )
(فیلد ORd_TotalPrice : مجموع قیمت کل کالا ها -البته این فیلد هم در همین جدول است-)
اما خطا میده و هیچ کاری انجام نمیده جز این که اطلاعات جدول دیتیل رو دیگه نشون نمیده


اگر امکان داره بیشتر راهنمایی کنید

حسین شهریاری
چهارشنبه 12 خرداد 1389, 14:12 عصر
خب روش فوق برای همین امر بود که خدمتتون ارائه شد.
از کدش ایده بگیرید و نسبت به برنامه خودتون اونا به کار ببندید.

mehdimdp
چهارشنبه 12 خرداد 1389, 18:04 عصر
DataModule2.ADOQOrd.sql.text:= 'select sum(ORd_TotalItmPrice) as ORd_TotalPrice from Orders' ;
DataModule2.ADOQOrd.close;
DataModule2.ADOQOrd.open ;
edit1.text := DataModule2.ADOQOrd.fieldbyname('Ord_TotalPrice'). AsString;


(فیلد ORd_TotalPrice : مجموع قیمت کل کالا ها -البته این فیلد هم در همین جدول است-)
اما خطا میده و هیچ کاری انجام نمیده جز این که اطلاعات جدول دیتیل رو دیگه نشون نمیده[/RIGHT]


اگر امکان داره بیشتر راهنمایی کنید

اگر چنین باشد که شما در یک جدول یک فیلدی مثلا با نام a داشته باشید و بخواهید در کوئری از آن جدول، فیلدی را با نام A تعریف کنید خب 100% واضح است که خطا میدهد.
البته اگر شما همچین اشتباهی نکردید. لطف کنید متن خطا رو اینجا بذارین
موفق باشید

حسین شهریاری
چهارشنبه 12 خرداد 1389, 18:30 عصر
اگر چنین باشد که شما در یک جدول یک فیلدی مثلا با نام a داشته باشید و بخواهید در کوئری از آن جدول، فیلدی را با نام A تعریف کنید خب 100% واضح است که خطا میدهد.


اصلا درست نیست!!

اون یه نام مستعال هست که مابه اون فیلد محاسباتی اختصاص میدیم و حتی اگه همنان فیلد اصلی که جمع روی اون صورت گرفته هم باشه باز هیچ کار اشتباهی مرتکب نشدیم.

مشکل ایشون چیز دیگه ای هست.البته نمیدونم دقیقا توی چی گیر کردن؟

mehdimdp
چهارشنبه 12 خرداد 1389, 22:26 عصر
اصلا درست نیست!!

اون یه نام مستعال هست که مابه اون فیلد محاسباتی اختصاص میدیم و حتی اگه همنان فیلد اصلی که جمع روی اون صورت گرفته هم باشه باز هیچ کار اشتباهی مرتکب نشدیم.

مشکل ایشون چیز دیگه ای هست.البته نمیدونم دقیقا توی چی گیر کردن؟

حق با شماست من اشتباه گفتم.