PDA

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



mahtab.kamali
سه شنبه 20 فروردین 1392, 20:52 عصر
با سلام به همه اساتید برنامه نویس

خیلی ساده مشکلم من اینه

در جدول کالا موجودی لیوان 500 عدد ثبت شده اگر در فرم صدور فاکتور 10 لیوان برای فروش ثبت شده باشد

بایستی این 10 عدد از جدول کالا کسر و در جدول فروش ثبت شود

حالا ما چگونه می توانیم این مطلب را پیاده سازی کنیم

farghabil
سه شنبه 20 فروردین 1392, 21:11 عصر
با دستورات اس کیو ال این کارو میکنی دیگه
یعنی اول تعداد لیواناتو بدست میاری و میریزی تو یه متغییر بعد اون 10 تا رو از کلش کم میکنی بعد مقدار موجود رو تو جدول کالا آپدیت میکنی
قبلا این سوالو جواب داده بودم با سورس
بازم نتونستی ایمیل بده بگم
ah_sadeghi777@yahoo.com

mahtab.kamali
سه شنبه 20 فروردین 1392, 21:20 عصر
با دستورات اس کیو ال این کارو میکنی دیگه
یعنی اول تعداد لیواناتو بدست میاری و میریزی تو یه متغییر بعد اون 10 تا رو از کلش کم میکنی بعد مقدار موجود رو تو جدول کالا آپدیت میکنی
قبلا این سوالو جواب داده بودم با سورس
بازم نتونستی ایمیل بده بگم
ah_sadeghi777@yahoo.com

ممنون از پاسختون
خواهش می کنم اگه ممکنه همینو با یه تکه کد همینجا توضیح مختصر بدین :ناراحت:

veniz2008
سه شنبه 20 فروردین 1392, 23:29 عصر
سلام. نمیدونم طراحی جدول شما به چه صورت هست ولی قاعدتا باید یک فیلد موجودی داشته باشید که بگه از هر محصولی چقدر موجود هست. برای اینکار باید تعداد کل اون کالا - تعداد خریدهای اون کالا
یه stored procedure میتونه به این شکل باشه:


create proc CalculateRemainKala
@kalaid int
as
declare @totalkala int
declare @totalbuykala int
select @totalkala = KalaNumber from TblKala where KalaID = @kalaid
select @totalbuykala = COUNT(*) from TblKharid where KalaID = @kalaid
Insert into TblKalaState (KalaID,KalaRemain) values(@kalaid,@totalkala - @totalbuykala)
Go

توجه کنید که این فقط یه مثال هست و شما باید طبق نیاز خودتون و طبق طراحی خودتون، تغییرات لازم رو اعمال کنید. کدها گویای کار هستن ولی اگر جاییش رو متوجه نشدید بگید تا توضیح بدم.
موفق باشید.

Pis7Aller
سه شنبه 20 فروردین 1392, 23:57 عصر
خیلی راحت می تونین از ذستو output توی sql این موضوع رو انجام بدید با فرض وجود دو جدول t1 و t2 و ستون های id and name می خوایم اگه اطلاعاتی از t1 حذف شه همون به t2 اضافه شه که به صورت زیر میشه نوشت :
delete from t1
output deleted.id , deleted.name into t2
where -----

mahtab.kamali
چهارشنبه 21 فروردین 1392, 14:15 عصر
سلام. نمیدونم طراحی جدول شما به چه صورت هست ولی قاعدتا باید یک فیلد موجودی داشته باشید که بگه از هر محصولی چقدر موجود هست. برای اینکار باید تعداد کل اون کالا - تعداد خریدهای اون کالا
یه stored procedure میتونه به این شکل باشه:


create proc CalculateRemainKala
@kalaid int
as
declare @totalkala int
declare @totalbuykala int
select @totalkala = KalaNumber from TblKala where KalaID = @kalaid
select @totalbuykala = COUNT(*) from TblKharid where KalaID = @kalaid
Insert into TblKalaState (KalaID,KalaRemain) values(@kalaid,@totalkala - @totalbuykala)
Go

توجه کنید که این فقط یه مثال هست و شما باید طبق نیاز خودتون و طبق طراحی خودتون، تغییرات لازم رو اعمال کنید. کدها گویای کار هستن ولی اگر جاییش رو متوجه نشدید بگید تا توضیح بدم.
موفق باشید.

آقای veniz2008 ممنونم از لطفتون
اما اگه لطف کنین وهمین شیوه رو با استفاده از روش ADO بزارین ممنون می شم
از stored procedure توی برنامه استفاده نکرده ام

mahtab.kamali
چهارشنبه 21 فروردین 1392, 23:22 عصر
با سلام

لطفا یه نفر راهنمایی کنه:ناراحت::افسرده::عصبانی++:

linux
پنج شنبه 22 فروردین 1392, 00:27 صبح
با سلام به همه اساتید برنامه نویس

خیلی ساده مشکلم من اینه در جدول کالا موجودی لیوان 500 عدد ثبت شده اگر در فرم صدور فاکتور 10 لیوان برای فروش ثبت شده باشد بایستی این 10 عدد از جدول کالا کسر و در جدول فروش ثبت شود
حالا ما چگونه می توانیم این مطلب را پیاده سازی کنیم
مشکل شما در طراحی جدولتون هست. دوتا جدول لازم ندارید یک جدول مشکلات شما را حل می‌کند.
اگر یک جدول باشه
۱- آیدی
۲- کد کالا
۳- نام کالا و .. هر گروه بندی و چیزهایی دیگری که لازم هست.
۴- کد سند ورود یا خروج کالا از انبار
۵- مقدار
۶- واحد و از این چرت و پرتها
وقتی کالا وارد می‌شود مقدار + هست و وقتی کالا فروخته می‌شود مقدار - با این حساب شما موجودی کالاتون درست در میاد و فرم صدور فاکتور با این جدول کار می‌کند

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

mahtab.kamali
شنبه 24 فروردین 1392, 19:25 عصر
یعنی هیچ کدوم از مهندسین تا حالا همچی موردی نداشته اند :ناراحت:

linux
شنبه 24 فروردین 1392, 23:57 عصر
یعنی هیچ کدوم از مهندسین تا حالا همچی موردی نداشته اند :ناراحت:
چرا عزیز دل برادر! این چیزی که برای شما اتفاق افتاده در همه برنامه‌های حسابداری و انبار داری هست ولی کسی چیزی را حذف نمی‌کند و تقریبا راه حلی که دارد، همون هست که من گفتم.
تو حسابداری فرض کنید شما و من هر دو در یک بانک حساب داریم وقتی از حساب شما کسر میشه و به حساب من واریز میشه چه اتفاقی می افته؟ آیا رکوردی از حساب شما پاک میشه و به من اضافه میشه؟
در یک تراکنش و همزمان دو رکورد به جدول اضافه میشود و یک رکورد مبلغی که از حساب شما کسر شده با مقدار منفی ذخیره می‌شود و یک رکورد با همون مبلغ و به مقدار مثبت برای من ثبت می‌شود
برای انبار هم همین هست. شما ۲تا رکورد باید همزمان ثبت کنی.