PDA

View Full Version : ساختن فاکتور



sobhangh
دوشنبه 05 مرداد 1388, 13:57 عصر
سلام
من می خوام برنامه ای بسازم که فاکتور بیرون بده اما همه ی تلاش هام هی خراب شد تا آخر همه چیزو پاک کردم و اومدم اینجا تا راه حل رو از شما بخوام.
از اول تا آخر نمی دونم باید چیکار کنم.
البته می خوام از دیتابیس اکسس استفاده کنم.
فاکتور علاوه بر چاپ بصورت فایل هم جداگانه ( به غیر از دیتا بیس) ذخیره بشه.
لطفا کمکم کنید چون خیلی وقته نمی تونم این کا رو انجام بدم.
اگر زحمتی نیست کامل توضیح بدید.

skflower
دوشنبه 05 مرداد 1388, 14:16 عصر
سلام دوست عزیز. شما اول لطف بفرمایید و یکم بیشتر توضیح بدید تا بهتر جواب بگیرید. اینطوری که شما سوال کردید، در جواب باید بگم از یکی از ابزار گزارش سازی استفاده کنید. اما اگه بدونم مشکلتون چیه که زحماتتون به هدر میره، شاید بهتر بتونم و بتونیم کمکتون کنیم.
با تشکر

ar_mokhtari
دوشنبه 05 مرداد 1388, 15:58 عصر
در تاپيك وقتي چنين سوال كلي پرسيده ميشه هيچكسي نميتونه كمكي به شما كنه. لطفاً وقتي سوالي مطرح ميكنيد اول خودتون رو جاي پاسخ دهنده قرار بديد ببينيد اطلاعات براي پاسخ كافيست يا خير.
1- ورژن Delphi‌ شما؟
2- برنامه مورد نظر شما فقط فاكتور چاپ ميكنه يا قرار هست يك نرم‌افزار فروش بشه كه فاكتور هم جزئي از اون هست.
3- اگر جواب سوال دوم مثبت هست پيشنهاد شخصي من استفاده از بانك SqlServer هست.
4- اين كه ميخواهيد غير از چاپ بصورت فايل جداگانه هم خروجي داشته باشيد كار سختي نيست كافيست براي تهيه چاپ از نرم‌افزاري مثل FastReport استفاده كنيد. امكان ارسال گزارش در قالبهاي pdf-Excel-Word-Text براي شما فراهم ميشود. يا اينكه از كامپوننت ارسال به Excel و ... استفاده كنيد.
5- براي ساخت چنين برنامه‌اي شما بايد قيل از هرچيز سيستم كدينگ كالا رو تعريف كنيد. (براي چه صنفي؟ آيا براي فروش از روش شناسايي ويژه استفاده ميشود يا خير؟)

sobhangh
سه شنبه 06 مرداد 1388, 12:27 عصر
سلام دوستان شرمنده واقعا داغ کردم.
با دلفی 7 کار می کنم. و قراره بخش فاکتور کاملا جدا از بقیه ی برنامه باشه.
و دلیل اینکه سوالم کلیه چون احساس می کنم از پایه کارم مشکل داشته و باید همه چیز رو از اول بنا کنم.
اول بگید که برای ساختن فاکتور به چه جیز هایی توی برنامه نیاز دارم.
و البته متاسفانه Sql server تا حالا کار نکردم و نمی دونم کار باهاش چطوریه
فکر کنید پروژه را آوردید بالا و تازه می خواهید شروع به نوشتن برنامه بکنید. چیکار می کنید.
لطفا بنویسید.

ar_mokhtari
سه شنبه 06 مرداد 1388, 13:16 عصر
براي شروع به ساخت فاكتور فروش كه فقط براي چاپ ازش استفاده بشه و به ديگر قسمتهاي يك سيستم فروش استاندارد اتصال نداشته باشد!!! (مثل موجودي اول دوره-رسيد كالا-حواله انبار- ...) شما احتياج به موارد زير خواهيد داشت(ميتونيد از Access هم استفاده كنيد):
1-تهيه فرم ورود اطلاعاتي و Table در DataBase به نام «مشتريان».
2-تهيه فرم ورود اطلاعاتي و Table در DataBase‌ به نام «كدينگ كالا».
3-تهيه فرم ورود اطلاعاتي و Table در DataBase به نام «فاكتور فروش» به مشخصات زير:
1-3) يك Table براي مشخصات كلي فاكتور شامل شماره(Uniq)، تاريخ، كد مشتري(Lookup به جدول مشتريان)، نوع فاكتور، روش پرداخت، دريافت كننده، قيمت كل و توضيحات فاكتور.
2-3) يك Table‌براي مشخصات اقلام هر فاكتور شامل شماره(Uniq)، شماره راهنماي اصلي فاكتور، كد كالا(Lookup به جدول كدينگ كالا)، تاريخ، تعداد، مقدار، في، قيمت كالا و توضيحات.
نكته: بين فيلدهاي شماره اصلي فاكتور در جدول 1-3 و شماره راهنماي اصلي فاكتور در جدول 2-3 بايد Relation برقرار كنيد كه هم شامل Update و هم شامل Delete بشود.
براي گزارش هم ميتوانيد از reportBuilder و يا FastReport استفاده بفرمائيد.
شما بسم الله رو بگو اگر موردي داشتي ما در خدمتيم.

sobhangh
چهارشنبه 07 مرداد 1388, 09:52 صبح
سلام
توی ارتباط مشکل پیدا کردم.
من جدول 1-3 رابه جدول اول ارتباط دادم و ای باعث شد که توی فرم اصلی که قرار بود فاکتور نوشته بشه. نشه هیچکاری کرد.و فقط به درد نمایش بخوره. البته توی فرم آخر من هر چهار تا table را باز کردم که شاید مشکلش از همینجا باشه.
اگه می بینید بدون امتحان تمامی موارد ممکن دارم سوال می کنم بخاطر اینکه به زودی اینترنتم قطع می شه و من می خوام از شما اساتید استفاده کنم.
برای ارتباط هم از عنصر ado table استفاده کردم.
راستی فیلدی که با هم مرتبطشون کردم یک کلید از نوع auto number بوده.
و البته کدی که تاریخ کامپیوتر را برمی گردونه چیه.
و هرچیز دیگه ای که فکر می کنید من باید بدونم برای این کار چون این اولین تجربه ی من توی ارتباط دیتابیس هست و کارهای قبلی یک دیتابیس بیشتر نداشته و یا جدا بودن. امید وارم وقت کافی برای توضیح جامع داشته باشید.

asd_moghadas
چهارشنبه 07 مرداد 1388, 09:56 صبح
سلام
report vewer حلال مشکلات

ar_mokhtari
چهارشنبه 07 مرداد 1388, 11:40 صبح
من جدول 1-3 رابه جدول اول ارتباط دادم و ای باعث شد که توی فرم اصلی که قرار بود فاکتور نوشته بشه. نشه هیچکاری کرد
جدول اول؟ يعني جدول مشتريان؟ شما فقط بايد جدول اصلي فاكتور و جدول جزئيات آن را با يك فيلد مشترك به هم Relation كني.
فيلد نام مشتري را در فرم فاكتور بايد Lookup كني از Table مشتريان.

البته توی فرم آخر من هر چهار تا table را باز کردم که شاید مشکلش از همینجا باشه.

توي فرم اصلي فاكتور فروش فقط بايد از Table اصلي فاكتور و Table جزئيات استفاده كني. (همزمان) كاربر بايد اول اطلاعات اصلي فاكتور و بعد جزئيات آن را (مثلاً در يك DbGrid) ورود اطلاعات كند.
همونطور كه گفتم بايد كد كالا رو هم تحت يك فيلد Lookup از جدول كدينگ بخوني.

برای ارتباط هم از عنصر ado table استفاده کردم.
از AdoQuery استفاده كنيد. (پيشنهاد شخصي من)

همچنين براي پركردن اطلاعات مشتريان و كدينگ كالا به دو فرم ورود اطلاعاتي نياز داري.(همونطور كه برات نوشتم).

ضمن اين كه جناب sobhangh عزيز، نوشتن اين پروژه زمان خاص خودش رو ميبره. چون ماهيتش يكي از اصليترين برنامه‌هاي معمول برنامه‌نويسان هست. با عجله به نتيجه نميرسيد.

sobhangh
پنج شنبه 08 مرداد 1388, 10:02 صبح
سلام
با کمک های شما دارم به جاهایی می رسم اما نمی دونم چطوری Look up کنم. یعنی روش و کد و... درکل هیچی ازش نمی دونم.
تاحالا مشکل دیگه ای نبوده و فکر می کنم با فهمیدن این موضوع بتونم فاکتور تحویل بدم.

skflower
پنج شنبه 08 مرداد 1388, 11:54 صبح
سلام دوست عزیز. من تو همین وبسایت مطالب جالبی راجع به فیلدهای Lookup دیدم. میتونید یه search کنید.
موفق باشید.

sara.mahdavi
چهارشنبه 26 تیر 1392, 18:52 عصر
با سلام:لبخندساده:
دوستان من طبق این راهنمایی ها جداولم رو به هم متصل کردم
ولی در قسمت


2-3) يك Table‌براي مشخصات اقلام هر فاكتور شامل شماره(Uniq)، شماره راهنماي اصلي فاكتور، كد كالا(Lookup به جدول كدينگ كالا)، تاريخ، تعداد، مقدار، في، قيمت كالا و توضيحات.
نمیدونم چطوری به هم متصلشون کنم
من چهارتا جدول دارم


Customer و SoftWare و Sell و FieldSell

توی قسمت SQL جدول Customer نوشتم
Select * From Customer
توی قسمت SQL جدول SoftWare نوشتم
Select * From SoftWare
توی قسمت SQL جدول Sell نوشتم
select *
from Sell
where CustomerID = @ID or @ID = 0
توی قسمت SQL جدول FieldSell نمیدونم چی باید بنویسم که جداول درست متصل بشن
امیدوارم منظورم رو رسونده باشم
ممنون میشم راهنماییم کنید :لبخندساده:

gholami146
چهارشنبه 26 تیر 1392, 21:01 عصر
با سلام
برای ساخت برنامه فاکتور زنی میتونید از برنامه محسن سافت که معروف به (محسن فاکتور)هست الهام بگیرید (تو نت سرچ کنید برنامه فری هست پیداش میکنید)
و اما
برای اینکه شما بتونید یک برنامه فاکتور با استفاده از دلفی و بانک اکسس طراحی کنید باید به این روش کلی عمل کنید
1- بانکی داشته باشید که تمامی فاکتور ها چه خرید و چه فروش در آن باشد و در فیلد های آن اطلاعات کلی فاکتور موجود باشد مثلا نام مشتری ، کد مشتری ، شماره فاکتور ، تاریخ فاکتور ، مبلغ خدمات ، تخفیف ، مبلغ کل فاکتور و ... که مهم ترین فیلد برای ما شماره فاکتور هست که باید یک فیلد یکتا باشد
2- جدولی که در بردارنده ریز اقلام فاکتور ها باشه که به غیر از داشتن یک فیلد آوتو نامبر فیلدی رو داشته باشه که در اون مقدار فیلد بانک فاکتورها رو در خود جای بده یعنی
ID,TblFacID,Sharh,Qty,Price,Total
که در TblFacID شما باید تمامی ردیف ها تون مقدار جدول فاکتور ها رو داشته باشه
3- برای نوشتن و خوندن فاکتورها باید یک جدول دقیقا مشابه جدول دوم داشته باشید که بصورت موقت ایجاد بشه و در زمانی که کاربر اقدام به ثبت یا ویرایش اطلاعات یک فاکتور جدید میکنه تمامی مقادیر موجود در داخل جدول اصلی رو با استفاده از یک کوئری خونده و در داخل اون بریزید و یا در هنگام ثبت فاکتور جدید بعد از انجام عمل ثبت مقادیر رو به داخل جدول اصلی انتقال بدید
به همین سادگی این یک روش برای طراحی فاکتور است که باهاش میتونید یک فاکتور زن رو پیاده سازی کنید
اگه سئوالی داشتید من در خدمتم
موفق باشید

sara.mahdavi
پنج شنبه 27 تیر 1392, 04:05 صبح
ممنون از شما :لبخندساده:
این مطالب خیلی بهم کمک کرد ولی من این جداولی که گفتید رو درست کردم حالا باید به هم متصلشون کنم ک بتونم توی فاکتور ازشون استفاده کنم
توجه کنید من فقط میخوام یک برگه فروش (فاکتور) توی یک فرم درست کنم و قصد چاپ ندارم
میشه یکم راهنمایی کنید؟؟؟؟؟:لبخندساده:

یوسف زالی
پنج شنبه 27 تیر 1392, 18:07 عصر
سلام.
شما تا چه حد می خواهید تفکیک دیتا داشته باشید؟
تخفیفات جوایز به تفکیک کالا می خوره؟
این تخفیفات به تفکیک کد تخفیف هم هست؟ مثلا بعد ها لازم دارید ببینید مثلا تخفیف حجمی چقدر دادید؟
یا مثلا روی فلان کالا از اول سال تا به حال چقدر تخفیف دادید؟
آیا لازم دارید گزارش دارایی بدید؟
آیا سفارش فروش هم ثبت می کنید؟
آیا فروش داغ هم صادر می کنید؟
باید دید تحلیل سیستم شما چطوره تا بشه راه درستی رو پیشنهاد داد.

sara.mahdavi
پنج شنبه 27 تیر 1392, 20:01 عصر
موارد خیلی خوبی بیان کردید:چشمک:
این فاکتوری که من میخوام طراحی کنم خیلی ساده ست و تخفیف آن بصورت دستی محاسبه میشه
البته اگه این موارد رو هم بشه توضیح داد خیلی خوبه :خجالت:
ولی همین ک بتونم یک فاکتور ساده ایجاد کنم کار منو راه میندازه
در حال حضر مشکل من روی اتصال جداول به همدیگست (پست شماره 11) چطوری باید این کار رو انجام بدم ؟؟؟؟
واقعا از کمکتون ممنونم:لبخندساده:

یوسف زالی
جمعه 28 تیر 1392, 00:13 صبح
فرض می کنم که جداولتون این هاست:


Customers
----------
CST_Serial int identity(1, 1)
CST_Code varchar(100) not null
CST_Name varchar(500) not null
CST_Family varchar(500) not null
CST_NationalCode int not null
CST_Tel varchar(20) null
CST_Address varchar(4000) null
.
.

Goods
------
GUD_Serial int identity(1, 1)
GUD_Code varchar(100) not null
GUD_Name varchar(500) not null
GUD_DefaultPrice decimal null
.
.

FactorBodies
-------------
FCB_Serial int identity(1, 1)
FCB_CST int not null related to CST_Serial
FCB_Code int not null
FCB_Date char(10) not null
FCB_Increments decimal not null
FCB_Decrements decimal not null
.
.

FactorItems
------------
FCI_Serial int identity(1, 1)
FCI_FCB int not null related to FCB_Serial
FCI_GUD int not null related to GUD_Serial
FCI_Amount decimal not null
FCI_Price decimal not null
.
.

البته اگر دوستم نیاد بگه داریم منحرفت می کنیم! (:لبخند:)، این یکی از طراحی ها برای کارهای کوچیکه که قرار نیست تفکیک کالایی برای تخفیفات یا مالیات ها اتفاق بیفته.

پس از این طراحی ها، و گذاشتن ریلیشن ها در دی بی، نوبت می رسه به SP ها یا کوئری ها.
برای مشتری و کالا که راحته، برای فاکتورها:

بدنه ی فاکتور:


select *
from FactorBodies
join Customers on CST_Serial = FCB_CST
where
(FCB_Serial = @FCB_Serial or @FCB_Serial = 0)
and
(FCB_CST = @FCB_CST or @FCB_CST = 0)
and
(FCB_Code = @FCB_Code or @FCB_Code = 0)
and
(FCB_Date between @FCB_DateFrom and @FCB_DateTo)


اقلام فاکتور:


select *
from FactorItems
join Goods on GUD_Serial = FCI_GUD
where
(FCI_Serial = @FCI_Serial or @FCI_Serial = 0)
and
(FCI_FCB = @FCI_FCB or @FCI_FCB = 0)
and
(FCI_GUD = @FCI_GUD or @FCI_GUD = 0)



این فقط یکی از راههاست. تاکید : ممکنه کس دیگه بیاد راه دیگه ای ارائه بده. من با توجه به مشخصات داده شده راه دادم (یعنی مطمئنم میادا :قهقهه: (خنده هیستریک))

در کدوم مورد ابهام دارید؟

sara.mahdavi
جمعه 28 تیر 1392, 02:34 صبح
:لبخندساده:ممنون من همین رو می خواستم فقط وقتی این 2 تا کوئری رو واسه جداول خودم می نویسم
این ارور رو میده


Syntax error n FROM clause

کجا مشکل دارم ؟؟؟:ناراحت:
درضمن دیتا بیس من Access

یوسف زالی
جمعه 28 تیر 1392, 03:05 صبح
کوئری رو بگذارید.

sara.mahdavi
جمعه 28 تیر 1392, 16:07 عصر
select *
from Sell
join Customer on ID = CustomerID
where
(ID = @ID or @ID = 0)
and
(CustomerID = @CustomerID or @CustomerID = 0)
and
(SellDate between @SellDateFrom and @SellDateTo)

gholami146
جمعه 28 تیر 1392, 16:14 عصر
اصلا نیازی به این کارها نیست
با یک ریلیشن شیپ ساده این کار رو حل کنید

gholami146
جمعه 28 تیر 1392, 16:16 عصر
من تمامی مراحل رو نوشتم نمی دونم شما دیگه چی لازم دارید
این بانک ها رابطه پیچیده ای نداره فقط کافی اطلاعات رو داخل جداول بزارید

یوسف زالی
جمعه 28 تیر 1392, 16:18 عصر
راستش من اکسس بلد نیستم، اما این راه رو امتحان کن:
به جای Join از , استفاده کن، و به جای On بگذار تو where.
مثلا این طوری:
select * from A, B where ID1 = ID2 and ...

آقای غلامی پس در گرید چطوری نام مشتری رو کنار فاکتور نمایش بده؟ نگید با لوکیت که راه خیلی بدیه.

gholami146
جمعه 28 تیر 1392, 16:25 عصر
دوست عزیز نیازی به لوکیت نداره
شما اگر از مستر فیلد ها استفاده کنید در زمانی که ریلیشن شیپ رو بر قرار کنید با انتخاب داده در جدول اصلی تمامی زیر اطلاعات در جدول فرزند با استفاده از قابلیت ریلیشن شیپ بطور اتوماتیک انتخاب میشه و نیازی به هیچ دخالتی از سمت کاربر نداره

یوسف زالی
جمعه 28 تیر 1392, 16:30 عصر
منظور من مستر - دیتیل نیست!
شما مسترت می شه بدنه فاکتور، دیتیل می شه اقلام، حالا در همون مستر کنار شماره فاکتور و تاریخ، نام مشتری هم می خوای، و در دیتیل کنار قیمت نام کالا رو هم می خوای. اینها رو از کجا میاری؟
اگر از 4 تا گرید یا دیتاست استفاده کنی که درست نیست.
منظور من در همون مستر هست. برای آوردن نام مشتری در گرید فاکتور ها.
راه شما چیه؟ چطور می شه با استفاده از راه شما این کار رو کرد؟
ضمنا کدهایی که نوشتم هم باید در همون مستر - دیتیل انجام بشه. در رویداد AfterScroll

gholami146
جمعه 28 تیر 1392, 16:49 عصر
در این روش هرگاه ردیف 1 انتخاب گردد که مشتری ان غلامی است در جدول دوم تمامی کالای فروخته شده به ایدی 1 که برابر 1 است انتخاب میشود

sara.mahdavi
جمعه 28 تیر 1392, 16:50 عصر
دوستان واقعا ازتون ممنونم ولی بذارید برای اینکه راحتر بتونید راهنماییم کنید یکم کاملتر توضیح بدم

من از دیتا بیس اکسس استفاده می کنم
و توی دلفی از ADOQuery استفاده میکنم
اطلاعات جداول



Customer
----------
ID int identity(1, 1)
IDCustomer varchar(100) not null
Name varchar(500) not null
Family varchar(500) not null
NationalCode int not null
Tel varchar(20) null
Address varchar(4000) null
.
.....................
کوئری >>
.....................
Select * From Customer
____________________________________________

SoftWare
------
ID int identity(1, 1)
Name varchar(500) not null
DefaultPrice decimal null
.
.....................
کوئری >>
.....................
Select * From SoftWare
____________________________________________

Sell
-------------
ID int identity(1, 1)
CustomerID int not null related to IDCustomer
SellDate char(10) not null
TotalPrice decimal not null
.
.....................
کوئری >>
.....................
select *
from Sell
join Customer on ID = CustomerID
where
(ID = @ID or @ID = 0)
and
(CustomerID = @CustomerID or @CustomerID = 0)
and
(SellDate between @SellDateFrom and @SellDateTo)


____________________________________________

FieldSell
------------
ID int identity(1, 1)
IDSell int not null related to ID
IDSoftWare int not null related to ID
Price decimal not null
.
.....................
کوئری >>
.....................
select *
from FieldSell
join SoftWare on ID= IDSoftWare
where
(ID = @ID or @ID = 0)
and
(IDSell = @IDSell or @IDSell = 0)
and
(IDSoftWare = @IDSoftWare or @IDSoftWare = 0)

____________________________________________



در حال حاضر مشکلی که دارم اینکه دوتا جدول FieldSell و Sell رو باز نمیکنه و این ارور رو میده


Syntax error n FROM clause

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

با تشکر فراوان از تمامی دوستان بخصوص آقای You-See (http://barnamenevis.org/member.php?70247-You-See) و آقای gholami146 (http://barnamenevis.org/member.php?123410-gholami146) :لبخندساده:

sara.mahdavi
جمعه 28 تیر 1392, 16:55 عصر
در این روش هرگاه ردیف 1 انتخاب گردد که مشتری ان غلامی است در جدول دوم تمامی کالای فروخته شده به ایدی 1 که برابر 1 است انتخاب میشود
آقای غلامی من ریلیشن ها رو همیطوری که شما می فرمایید در اکسس به هم متصل کردم
حالا سوال من اینه که با توجه به اینکه من از ADOQuery استفاده می کنم چطوری باید کوئری اونها رو بنویسم؟؟

gholami146
جمعه 28 تیر 1392, 17:18 عصر
مثال زیر رو ببینید

gholami146
جمعه 28 تیر 1392, 17:22 عصر
این هم لینک اجرایی این مثال (http://gholami.persiangig.com/Application/M_D.rar)

یوسف زالی
جمعه 28 تیر 1392, 17:26 عصر
غلامی جان! شما نام مشتری رو در فاکتور آوردید؟؟!!!
نام کالا رو هم در اقلام آوردید؟؟؟؟؟!!!!
می دونید این روش طراحی یعنی چی؟
فکر کنم اصلا متوجه جداولی که من گذاشتم نشدید.
توصیه می کنم یک بار با حوصله بیشتری اون ها رو ببینید.

خانم سارا، فکر کنم ایراد شما به خاطر همنامی فیلد هاتون هست.
نام فیلد ها رو یونیک کنید یا این که در سلکتتون * رو به نام فیلد ها تغییر بدید.

gholami146
جمعه 28 تیر 1392, 17:38 عصر
دوست عزیز اقای "یوسی" این جداول فقط نمونه ای برای نمایش ایجاد روابط بین دو جدول به سرکار خانم مهدوی بود

sara.mahdavi
جمعه 28 تیر 1392, 17:43 عصر
غلامی جان! شما نام مشتری رو در فاکتور آوردید؟؟!!!
نام کالا رو هم در اقلام آوردید؟؟؟؟؟!!!!
می دونید این روش طراحی یعنی چی؟
فکر کنم اصلا متوجه جداولی که من گذاشتم نشدید.
توصیه می کنم یک بار با حوصله بیشتری اون ها رو ببینید.

خانم سارا، فکر کنم ایراد شما به خاطر همنامی فیلد هاتون هست.
نام فیلد ها رو یونیک کنید یا این که در سلکتتون * رو به نام فیلد ها تغییر بدید.
کارایی که فرمودید رو انجام دادم ولی بازم همون ارورر رو میده
اینم تغییرات


select ID_Sell,CustomerID,SellDate,TotalPrice
from Sell
join Customer on ID_Customer = CustomerID
where
(ID_Sell = @ID_Sell or @ID_Sell = 0)
and
(CustomerID = @CustomerID or @CustomerID = 0)
and
(SellDate between @SellDateFrom and @SellDateTo)

یوسف زالی
جمعه 28 تیر 1392, 17:51 عصر
سوال من در پست های قبلی مربوط بود به طراحی ای که ارائه دادم.
در اون طراحی برای آوردن نام مشتری مجبورید join کنید.
لزومی برای استفاده از SP نیست ولی وقتی درگیر پروژه بشید مثلا برای تنظیم چاپ، ارسال به اکسل، اعمال شرایط برای مکش رکورد ها... اونوقت اس پی یک ابزار فوق العاده هست. از طرفی در حالتی که SP استفاده نمی کنید و مثل اینجا از کوئری استفاده می شه، چطور می خواهید چنین کاری انجام بدید؟

خانم سارا، اگر ممکنه DB خودتون رو ضمیمه کنید. همراه با سورس، بهش نگاه بندازم ببینم چشه.

sara.mahdavi
جمعه 28 تیر 1392, 17:53 عصر
مثال زیر رو ببینید
آقای غلامی این مثالی که شما زدید رو قبلا من انجام دادم
توی این روش از ADOTable استفاده میشه ولی من گفتم دارم از ADOQuery استفاده میکنم
حالا در هرصورت اگه این روش جواب بده من حتما بجای ADOQuery از ADOTable استفاده میکنم
درضمن اینو هم به من بفرمایید که :
من جهارتا جدول دارم که توی فاکتور باید از همشون استفاده بشه که شما اینجا فقط بدنه و اقلام فاکتور رو به هم متصل کردید
حالا من چطوری توی فاکتور یک قسمت بذارم که کاربر
1-مشتری خودش رو انتخاب کنه
2-اطلاعات کلی فاکتور رو وارد بشه (شماره فاکتور ، تاریخ ، مبلغ کل و...)
3-از جدول کالا ها ، کالای مورد نظرشو انخاب کنه و توی جدول اقلام فاکتور ریخته بشه؟؟
بازم ممنونم:لبخندساده:

یوسف زالی
جمعه 28 تیر 1392, 17:56 عصر
خانم سارا،
بخش های مرتبط به فرم Data Entry رو با گرید های نمایشی قاطی نکنید.
بگذارید یکی یکی پیش برید.
اونجا کار خیلی ساده هست.

sara.mahdavi
جمعه 28 تیر 1392, 18:25 عصر
خانم سارا، اگر ممکنه DB خودتون رو ضمیمه کنید. همراه با سورس، بهش نگاه بندازم ببینم چشه.

107534
ممنون از کمکتون

یوسف زالی
جمعه 28 تیر 1392, 19:04 عصر
همون طور که حدس زدم ایراد از Join بود:



select ID_Sell,CustomerID,SellDate,TotalPrice
from Sell
, Customer
where ID_Customer = CustomerID
and
(ID_Sell = @ID_Sell or @ID_Sell = 0)
and
(CustomerID = @CustomerID or @CustomerID = 0)
and
(SellDate between @SellDateFrom and @SellDateTo)



اگر به مقادیر پارامتر ها گیر داد، براشون مقدار اولیه ست کنید:
از دکمه پارامترها در خصوصیات ADOQuery تمام لیست رو انتخاب کرده و یک اینتر بزنید. تمام.

sara.mahdavi
شنبه 29 تیر 1392, 01:48 صبح
:تشویق:با تشکر درست شد :لبخندساده:
وقتی در قسمت سلکت * میذارم تمام فیلد های جدول Customer رو هم میاره
آیا این کارم درسته؟؟ یا باید فقط تمام فیلدهای جدول Sell رو بخونم؟؟
بازم ممنون:چشمک:

یوسف زالی
شنبه 29 تیر 1392, 02:02 صبح
در داده های کم مهم نیست. در داده هایی با رکورد های بیش از 100 هزار تا بهتره که تعداد فیلدهاتون کمتر باشه.

sara.mahdavi
شنبه 29 تیر 1392, 19:10 عصر
لطفا کسی از دوستان اگه یک آموزش ساخت فاکتور (ک به تمام نکات لازم اشاره کرده) داره اینجا بذاره:خجالت:

یا یک مثال همراه با سورس آخه نمیدونم دقیقا باید چطور عمل کنم که بتونم عملیات فکتور زنی رو درست انجام بدم

واقعا از کمک تمامی دوستان متشکرم:قلب:

fahimi
یک شنبه 30 تیر 1392, 04:09 صبح
برای ساخت فاکتور 4 تیبل نیاز است
1-تیبل که نام مشتریان را نگهداری کند(کد مشتری -نام مشتری )
2-تیبل که نام کالا ها را نگهداری کند(کد کالا-نام کالا)
3-تیبل که تیتر فاکتور را نگهداری کند(شماره فاکتور-تاریخ صدور-کد مشتری)
4-تیبل که جزئیات را نگهداری کند(شماره فاکتور-کدکالا-تعداد-قیمت)

sara.mahdavi
یک شنبه 30 تیر 1392, 07:52 صبح
ممنون اینا رو میدونم و توی پست های قبلی هم در مورد همین جداول بحث شده
الان یکم توضیح میخام واسه طرز استفاده در فرم فاکتور که چوری عمل کنم
ممنون

یوسف زالی
یک شنبه 30 تیر 1392, 16:31 عصر
ساخت فاکتور با تمام جزییات خودش یه پروژه هست. دقیقا در کدوم قسمتش اطلاعات می خوای؟
تحلیل - طراحی - پیاده سازی - ورود داده - گزارش گیری - ...
و در چه حدی؟ کامل ؟

مثلا برای یک فاکتور کامل جداول مورد نیاز می تونه اینها باشه:

جدول مستر فاکتور لینک به جداول زیر:
- شرکت ها
- شعبات
- درخواست ها
- مشتریان
- بازاریاب ها
- انواع پرداخت
- انواع فاکتور
- لیست های قیمت

جدول اقلام فاکتور لینک به جداول زیر:
- هدر فاکتور
- کالا ها
- اقلام برگشتی

جدول تخفیفات لینک به جداول زیر:
- هدر فاکتور
- انواع بدهکار بستانکار کف فاکتور
- کالا ها

همون طور که می بینی شصت تا جدول درگیر می شه برای این که فاکتور رو کامل پیاده سازی کنید. (:لبخند: لبخند هیستریک!)
اما برای کاربرد های ساده تر از جداولی چشم پوشی می شه.

sara.mahdavi
دوشنبه 31 تیر 1392, 03:34 صبح
خب من در حال حاضر فقط میخوام یک فاکتور ساده بسازم
توی پست های قبلی شما و بقیه دوستان خیلی بهم کمک کردین و تونستم جداول و ارتباط اونها رو درست برقرار کنم
حالا توی فرم فاکتور می خوام :
1- کاربر نام مشتری رو انتخاب کنه
2- اقلام فاکتور رو اضافه کنه
3-فاکتور رو ذخیره کنه
روش صحیح انجام این کار رو بلد نیستم:افسرده:
فکر کنم اینهایی که گفتم یعنی توضیح کامل:خجالت:
اما هرچقدر ک بتونید کمکم کنید ازتون ممنون میشم:چشمک:

sara.mahdavi
سه شنبه 01 مرداد 1392, 16:45 عصر
دوستان کسی نیس راهنمایی کنه؟؟؟؟؟

حداقل بگید چطوری اقلام فاکتور رو وارد کنم ؟؟
ممنون

mojtaba0912433
سه شنبه 01 مرداد 1392, 18:36 عصر
107785
مثال

sara.mahdavi
چهارشنبه 02 مرداد 1392, 04:58 صبح
ممنون بابت این مثال خیلی خوب بود :چشمک:
توی این مثال هیچ جدولی به جدول دیگه متصل نبود یعنی ریلیشن نداشت
و باید هر اطلاعاتی که توی فاکتور به اون نیاز داری (نام مشتری و یا مشخصات اون ،نام کالا و مشخصات و... ) در داخل جدول فاکتور یک فیلد برای اون بسازی که این روش درست نیست
ولی از شما بسیار ممنونم واسه این مثال، که اگه از این تایپک به نتیجه ای نرسیدم از همین روش که شما در مثالتون آوردید استفاده میکنم
باز هم ممنونم:لبخندساده:

mojtaba0912433
چهارشنبه 02 مرداد 1392, 09:32 صبح
ممنون بابت این مثال خیلی خوب بود :چشمک:
توی این مثال هیچ جدولی به جدول دیگه متصل نبود یعنی ریلیشن نداشت
و باید هر اطلاعاتی که توی فاکتور به اون نیاز داری (نام مشتری و یا مشخصات اون ،نام کالا و مشخصات و... ) در داخل جدول فاکتور یک فیلد برای اون بسازی که این روش درست نیست
ولی از شما بسیار ممنونم واسه این مثال، که اگه از این تایپک به نتیجه ای نرسیدم از همین روش که شما در مثالتون آوردید استفاده میکنم
باز هم ممنونم:لبخندساده:
خیلی درگیر ریلیشن نشو البته برای یک نرم افزار فروش احتیاج به گزینه های خیلی زیادتری داری که باید به جداول اضافه کنی. برنامه های زیادی هست که بدون ریلیشن کارکرد صحیحتری نسبت به برنامه های پیچیده دارند

یوسف زالی
چهارشنبه 02 مرداد 1392, 11:18 صبح
خیلی درگیر ریلیشن نشو البته برای یک نرم افزار فروش احتیاج به گزینه های خیلی زیادتری داری که باید به جداول اضافه کنی. برنامه های زیادی هست که بدون ریلیشن کارکرد صحیحتری نسبت به برنامه های پیچیده دارند

این گفته اشتباهه.
باید برای تمام حالات ممکن ارتباطات رو در نظر بگیرید.
هیچ برنامه ای بدون ارتباط از ورژن با ارتباطش بهتر کار نمی کنه. فقط بزن در رو تر نوشته می شه.
سر فرصت یک نمونه آماده می کنم براتون.

یوسف زالی
شنبه 05 مرداد 1392, 05:11 صبح
متاسفانه حجم کار بالا بود :لبخند: و نشد نمونه براتون آماده کنم.
اما اجمالا:

- یکی از راههای قدیمی برای ثبت هدر و دیتیل فاکتور، استفاده از فاکتور های Fake بود که به دلایل زیادی استفاده ازش روش صحیحی نیست و دردسر زیاد داره.
- برای ثبت یا اصلاح فاکتور، هر دو جدول مستر و دیتیل رو همزمان آپدیت کنید، اگر دی بی شما از اس پی پشتیبانی نمی کند، این کار رو با BeginTrans می تونید انجام بدید.
- برای ثبت همزمان این دو، یکی از بهترین روش ها استفاده از XML هست، البته اگر دی بی شما در اس پی اون رو ساپورت کنه، وگرنه در اس پی هاش می تونید با یک رشته اون رو پیاده کنید.
- برای اطمینان از این که کد های اشتباه در ثبت اقلام یا مشتری وارد نشه، از DBLookupCombpBpx استفاده کنید.
- بهتره قسمت ورود داده رو روی خود گرید انجام ندید و براش فرم مجزا در نظر بگیرید. می تونید از فریم ها هم استفاده کنید که من ازش خیلی بدم میاد!
- همه قسمت ها تا قبل از زدن دکمه ذخیره، در حافظه یا در کلاینت دیتاست باقی می مونه، بعد از ثبت یا انصراف در موردش تصمیم گرفته می شه.

البته همه اینها بدیهیات بود!
شما بگو دقیق تو کدوم قسمت سوال داری، اگر بلد باشم جواب می دم.
موفق باشید. :لبخندساده: (لبخند ساده هیستریک)

sara.mahdavi
شنبه 05 مرداد 1392, 20:49 عصر
ممنون بابت این اطلاعات :لبخندساده:
من برای ورود نام مشتری یک دکمه گذاشتم که کاربر با استفاده از اون به لیست مشتریان میره و یک مشتری رو انتخاب میکنه ، بعد از انتخاب مشتری ،کد اون رو برای قسمت مشتری فاکتور استفاده میکنم و بطور اتومات شماره فاکتور و تاریخ اون ثبت میشه و جدول بدنه فاکتور یکبار Post میشه و دوباره Edit میشه بعد در قسمت ورود کالا هم همینطور عمل کردم ولی بعد از انتخاب کالا موقعی که میخواد یک فیلد به جدول موقت اقلام فاکتور اضافه کنه این اخطار رو میده



you cannot add or change a record because a related record is in table 'Sell'


من فکر میکنم هنوز توی اتصال جداول مشکل دارم:افسرده:

یوسف زالی
شنبه 05 مرداد 1392, 22:49 عصر
فکر می کنم به جای سریال جدول یک فیلد اشتباه دارید پاس می دید.
روشتون بد نیست ولی عالی هم نیست.
در این روش اگر وسط پست کردن مستر برق بره چی می شه؟

fahimi
یک شنبه 06 مرداد 1392, 20:33 عصر
با سلام
تعداد پست های زیاد در این خصوص شده و موضوع بحث کمی بی راهه رفته است من برای اینکه انسجامی به این بحث داده شود یک نمونه ساده از ثبت فاکتور را آماده کردم و برای راحتی استفاده از آن فقط از کامپوننت های پایه دلفی استفاده شده از اساتید محترم تقاضایی نقد و بررسی آن را دارم در کل از موارد ساده و پیش پا افتاد صرف نظر کرده ام

sara.mahdavi
سه شنبه 08 مرداد 1392, 05:02 صبح
فکر می کنم به جای سریال جدول یک فیلد اشتباه دارید پاس می دید.
روشتون بد نیست ولی عالی هم نیست.
در این روش اگر وسط پست کردن مستر برق بره چی می شه؟
ممنون
فکر میکنم هیچ اطلاعاتی ثبت نمیشه دیگه:متفکر:

sara.mahdavi
سه شنبه 08 مرداد 1392, 05:05 صبح
با سلام
تعداد پست های زیاد در این خصوص شده و موضوع بحث کمی بی راهه رفته است من برای اینکه انسجامی به این بحث داده شود یک نمونه ساده از ثبت فاکتور را آماده کردم و برای راحتی استفاده از آن فقط از کامپوننت های پایه دلفی استفاده شده از اساتید محترم تقاضایی نقد و بررسی آن را دارم در کل از موارد ساده و پیش پا افتاد صرف نظر کرده ام

خیلی ممنون نمونه خوبیه من همچین چیزی می خواستم:تشویق:
فقط نمیدونم چطوری فیلدهای TempClientDS رو آوردی (یعنی از کجا این فیلد ها اومده)؟؟؟؟؟؟؟؟؟؟؟؟
بازم ممنون:لبخندساده:

benyaminrahimi
سه شنبه 08 مرداد 1392, 09:11 صبح
شاید مربوط به بحث نباشه ولی استفاده از sp فراموش نشه :) (لبخند غیر هیستیریک)

fahimi
سه شنبه 08 مرداد 1392, 10:10 صبح
با سلام
آقای شاهین عشایری آموزش استفاده از ClientDataSet بصورت شیوا تهیه کرده است .
http://www.irstu.com/?p=1580

fahimi
سه شنبه 08 مرداد 1392, 10:15 صبح
شاید مربوط به بحث نباشه ولی استفاده از sp فراموش نشه :) (لبخند غیر هیستیریک)
آقای رحیمی منظور شما بحث Stored Procedures در Sql Server است

sara.mahdavi
سه شنبه 08 مرداد 1392, 21:32 عصر
با سلام
تعداد پست های زیاد در این خصوص شده و موضوع بحث کمی بی راهه رفته است من برای اینکه انسجامی به این بحث داده شود یک نمونه ساده از ثبت فاکتور را آماده کردم و برای راحتی استفاده از آن فقط از کامپوننت های پایه دلفی استفاده شده از اساتید محترم تقاضایی نقد و بررسی آن را دارم در کل از موارد ساده و پیش پا افتاد صرف نظر کرده ام
میشه یکم در مورد این کوئری


SELECT Order.OrderID, Order.OrderDate, Customers.CustomerName,
(select sum(Quantity) from Order_Details where OrderID=Order.OrderID Group by OrderID ) as total
FROM [Order] INNER JOIN Customers ON Order.CustomerID = Customers.CustomerID;

توضیح بدید
ممنون:لبخندساده:

fahimi
سه شنبه 08 مرداد 1392, 23:59 عصر
یک سلکت ساده است ولی نکته آن استفاده از یک SubQuery برای بدست آوردن جمع فاکتور ها در لیست فاکتور فروش است .
و برای نمایش نام مشتریان ،از JOIN به جدول Customers استفاده کرده ام

یوسف زالی
چهارشنبه 09 مرداد 1392, 00:30 صبح
روش خوبی هست. می تونید به جای استفاده از دیتاست از آرایه و رکورد و این چیزها هم استفاده کنید که خیلی مهم نیست.
اما قسمت مهم اینه که بعد از ثبت هدر فاکتور، در صورت بروز اختلال، یک فاکتور بدون دیتیل خواهیم داشت. بهتر بود از تراکنش استفاده می شد.


استفاده از sp فراموش نشه :)

ایشون دیتابیسشون اکسسه، ولی برای پیاده سازی تراکنش می تونن از همون BeginTrans شی اتصالشون (البته من در مورد اتصال ADOConnection می دونم) استفاده کنند.
:لبخندساده: (لبخند یه ذره هیستریک!)

fahimi
چهارشنبه 09 مرداد 1392, 16:46 عصر
در خصوص تراکنش کاملا حق با شما است .من این برنامه در دو سه ساعت تهیه کردم بعضی چیزها را به عمد و بعضی ها را هم به دلیل ضعف علمی حذف کردم .از این که دوستان با یادوری ضعف این برنامه را هدیه میکند تشکر میکنم
به هر حال قسمت ذخیره به شکل زیر اصلاح کردم


var
TA: integer;
begin
TA:=DataModule2.ADOConnection1.BeginTrans;
try
Save_Order_Table;
Save_Order_detilTable;
showmessage('فاکتور با شماره' + maxid + 'ذخیره شد');
Close;
DataModule2.ADOConnection1.CommitTrans;
except
on E:Exception do DataModule2.ADOConnection1.RollbackTrans;
end;
end;

sara.mahdavi
جمعه 11 مرداد 1392, 00:06 صبح
نوشته شده توسط fahimi http://barnamenevis.org/images/buttons/viewpost-left.png (http://barnamenevis.org/showthread.php?p=1833738#post1833738)یک سوال دیگه درمورد نمونه برنامه ای که گذاشتید

چرا توی برنامه مستقیم از تیبل Order استفاده نکردید و اطلاعات اون رو با ADOQuery مورد استفاده قرار دادید؟

نمیشد با همون تیبل Order و دیتاست کار کرد؟ من فکر میکنم اضافه کاری شده

درضمن من میخوام یک کد واسه حذف اطلاعات این جدول بنویسم نمیدونم چطوری انجام بدم (زیاد به ADOQuery مسلط نیستم)

ممنون:لبخندساده:

fahimi
جمعه 11 مرداد 1392, 04:33 صبح
1 بطور خیلی خلاصه ADOQuery یا هر شی مشابه دیگر جهت استفاده از زبان T-SQL می باشد.واژه SQL از حروف اول Structured Query Language یا زبان جستجوی ساختار یافته گرفته شده است, و SQL زبان جستجوی بانک های رابطه ای است و برای ایجاد و ویرایش و جستجو داده های موجود بر روی سیستم های مدیریت اطلاعات بکار می رود.
2-در FormActivate من از یک procedure به نام ListForosh فروش استفاده کرده ام - هدف از آن لیستی از فاکتور را ارئه می دهد که شامل شماره فاکتور،تاریخ فاکتور ،نام مشتری ،مبلغ فاکتور می باشد
چگونه می شود این اطلاعات را از تیبل Orders بازیابی کرد در حالیکه به تیبل نگاه کنید شامل فیلدهای (شماره فاکتور،تاریخ فاکتور،کد مشتری) می باشد
3-در مورد حذف داده ها


procedure DelOrderID(Morder_Id:string);
begin
with DataModule2 do
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('DELETE * FROM Order_Details');
query1.SQL.Add(' where OrderID=:OrderID');
query1.Parameters.ParamByName('OrderID').Value := Morder_Id;
query1.ExecSQL;
end;
end;

را می توانید سایر تیبل بسط دهید

Ramin_khan
شنبه 10 خرداد 1393, 10:01 صبح
ببخشید دوستان من میخوام یه برنامه فاکتور بسازم ولی توی یه قسمتش دچار مشکل شدم
از clientdataset استفاده نکردم چون بلد نیستم
من یه جدول مشخصات فاکتور و یه جدول اقلام فاکتور دارم که فاکتور جدید ثبت میکنه و برای نمایش مجدد هم مشکلی نداره توی گزارش گرفتن!
فقط نمیدونم اگر بخوام تعداد یکی از اقلام فاکتور رو که قبلا ثبت کردمو ویرایش کنم(مثلا قبلا توی فاکتور 4 تا مداد بوده حالا میخوام بشه 8 تا) یا یک ردیف از اقلام فاکتور رو حذف کنم باید چکار کنم!!!
ممنون میشم راهنمایی کنید.