PDA

View Full Version : سوال: مشکل با QUERY



mehdi_khepel2004
یک شنبه 29 دی 1387, 15:23 عصر
با سلام
من 1 جدول دارم که 2تا فیلد داره بدهکار و بستانکار که از نوع عددی هستند من باید توی گزارشم 1 فیلد دیگه کنار این 2تا به نام مانده که حاصل تفریق بدهکار از بستانکار هست رو نشون بدم با QUERY هم دارم کار میکنم . ازکدهای CALCFIELDوSQL هم استفاده کردم فایده نداشت لطفا راهنمایی کنید

lena abbaszadeh
یک شنبه 29 دی 1387, 16:11 عصر
data base ات چیه؟

mehdi_khepel2004
یک شنبه 29 دی 1387, 17:38 عصر
data base ات چیه؟
ازپارادوکس استفاده میکنم ضمنا با calcfield انجام دادم درست شد ولی زمانی که اطلاعات رو تو دیتا گرید نمایش میدی تا زمانی که اسکرول رو تکون ندادی درست کار میکنه ولی به محض اینکه اسکرول رو جابجا بکنی به سمت پایین مقادیر اضافه و کم میشن

Bahmany
یک شنبه 29 دی 1387, 18:52 عصر
select bedehkar,bestankar,bedehkar-bestankar as total from table1

mehdi_khepel2004
یک شنبه 29 دی 1387, 20:25 عصر
جواب میده ولی بصورت سطر به سطر مانده را حساب میکنه یعنی اینکه اگر بدهکار در این سطر برابر 100 و بستانکار برابر 0 جواب 100 میشه در حالی که من میخوام جمع مقادیر سطرهای قبل و بعد را هم را میخوام .اگر برنامه های حسابداری رو دیده باشی اون توری میخوام انجام بشه .
با تشکر

ghabil
یک شنبه 29 دی 1387, 22:25 عصر
یک مثال بزن بگو جوابت مثلا میخوای چطوری باشه؟

bmanfy
دوشنبه 30 دی 1387, 09:31 صبح
جواب میده ولی بصورت سطر به سطر مانده را حساب میکنه یعنی اینکه اگر بدهکار در این سطر برابر 100 و بستانکار برابر 0 جواب 100 میشه در حالی که من میخوام جمع مقادیر سطرهای قبل و بعد را هم را میخوام .اگر برنامه های حسابداری رو دیده باشی اون توری میخوام انجام بشه .

البته اون جور که من تو برنامه های حسابداری دیدم مقادیر سطر قبلی رو فقط استفاده میکنند و عملا با سطرهای بعدی استفاده نمیشه .
که معمولا در زمان ایجاد گزارش هم استقاده میشه .
برای این کار میتونی ار توابع تجمعی نظیر Sum استفاده کنی . البته کدی نمینویسم برات چون دقییق نمیتونم بگم چه کدی . البته در اولین فر صت اگه تونستم برات کدش رو هم مینویسم .
البته با همون CalcField هم فکر میکنم بشه پیاده سازی کرد .البته توصیه نمیکنم .
حالا اگه موقعیتش پیش اومد کد Sql رو برات مینویسم .
موفق باشید .

mehdi_khepel2004
دوشنبه 30 دی 1387, 13:46 عصر
یک مثال بزن بگو جوابت مثلا میخوای چطوری باشه؟
به این مثالی که ضمیمه کردم نگاه کنید مشکل من با اسکرول یا از فیلدهای محاسباتی !
با calc field انجام دادم ولی مشکل انجاست که زمانی که اسکرول بار گرید رو حرکت میدم مقادیر تغییر میکنه

Bahmany
دوشنبه 30 دی 1387, 17:12 عصر
select sum(bedehkar),sum(bestankar),sum(bedehkar)-sum(bestankar) as total from table1

البته بازهم این قسمت بستگی به نحوه نمایش شما داره:اشتباه:

موفق باشید

mehdi_khepel2004
دوشنبه 30 دی 1387, 21:48 عصر
اقای بهمنی این کد شما جواب نمیده به مثالی که فرستادم نگاه کن با این کد فقط 1 سطر نمایش داده میشه اون هم فقط مفادیر نهایی هستند

meysam_pro
چهارشنبه 06 خرداد 1388, 10:18 صبح
کسی نبود جواب بده؟

ghabil
چهارشنبه 06 خرداد 1388, 17:37 عصر
برای این کار باید یک متغیر عمومی بگیری حالا یا توی اس کیو ال یا راحترش توی دلفی فیلد تفاضل رو یک فیلد Calculated تعریف کنی که مقدارش از جمع مقدار تفاضل فعلی با تفاضل قبلیها بدیت میاد :




var
GlobalSum: Integer


onclaclfields..
GlobalSum := GlobalSum + DataSet.FieldByName(Cre).AsInteger - DatasetfieldByName(Deb).asIntegr;
DataSet.FieldByName(Diff).AsInteger := GlobalSum;