ورود

View Full Version : سوال: ویرایش فیلد های یک فاکتور در vb



shafie-rayaneh
چهارشنبه 25 شهریور 1394, 16:42 عصر
با سلام و خسته نباشید خدمت شما
من یک نرم افزار صدور فاکتور درست کردم و الان میخوام یک دکمه ویرایش در قسمت فاکتور بزارم و الان گیج شدم راهنمایی میخواستم. من سه تا adodc دارم که اولیش برای مشتری هامه و دومیش برای فاکتور و سومی برای کالاهایی که داخل فاکتور میره میخوام توی adodc3 اون فیلدهایی که آیدی شون با آیدی فاکتوری که در Adodc2 انتخاب شده یکی هست رو پیدا کنم و اونها رو داخل یک دیتابیس دیگه (Temp) بریزم و بعد فرم فاکتورم باز بشه الان وقتی فاکتور جدید میزنم اطلاعات درست داخل دیتابیس Temp میره و مشکلی ندارم فقط برای ویرایش گیر کردم ممنون میشم کد دستور رو برام بنویسید.

shafie-rayaneh
چهارشنبه 25 شهریور 1394, 20:40 عصر
من یه چیزایی نوشتم اینجوریه

Dim i, j As Long

For i = 1 To Adodc3.Recordset.Fields("Factor_ID")
For j = 1 To Adodc2.Recordset.Fields("Factor_ID")
If i = j Then
Form9.Adodc4.Recordset.AddNew
Form9.Adodc4.Recordset.Fields!Barkod = Adodc3.Recordset.Fields!Barkod
Form9.Adodc4.Recordset.Fields!NameKala = Adodc3.Recordset.Fields!NameKala
Form9.Adodc4.Recordset.Fields!Tedad = Adodc3.Recordset.Fields!Tedad
Form9.Adodc4.Recordset.Fields!Vahed = Adodc3.Recordset.Fields!Vahed
Form9.Adodc4.Recordset.Fields!Mablagh = Adodc3.Recordset.Fields!Mablagh
Form9.Adodc4.Recordset.Fields!M_Kol = Adodc3.Recordset.Fields!M_Kol
Form9.Adodc4.Recordset.Fields!Takhfif = Adodc3.Recordset.Fields!Takhfif
Form9.Adodc4.Recordset.Fields!JMKolT = Adodc3.Recordset.Fields!JMKolT
Form9.Adodc4.Recordset.Fields!JMA = Adodc3.Recordset.Fields!JMA
Form9.Adodc4.Recordset.Fields!JMABJKol = Adodc3.Recordset.Fields!JMABJKol
Form9.Adodc4.Recordset.Update
'Adodc3.Recordset.MoveNext
Adodc3.Refresh
End If
Next i
ولی درست جواب نمیده ممنون میشم راهنمایی کنید.

علیرضا5
پنج شنبه 26 شهریور 1394, 01:16 صبح
Form9.Adodc4.Recordset.AddNew

اگه برای ویرایشه پس AddNew نیاز نداره

vbhamed
پنج شنبه 26 شهریور 1394, 07:51 صبح
سلام
چیزی مشابه کد زیر باید بنویسید، البته نام جداول خودتون رو بزارید
Dim i&
Dim rslist As Recordset

Adodc3.RecordSource = "Select * From tbl_FactorList where Factor_ID = " & Adodc2.Recordset!Factor_ID
Adodc3.Refresh

Set rslist = Adodc3.Recordset

Do Until rslist.EOF

With Form9.Adodc4.Recordset
.AddNew
!Barkod = rslist!Barkod
!NameKala = rslist!NameKala
!Tedad = rslist!Tedad
!Vahed = rslist!Vahed
!Mablagh = rslist!Mablagh
!M_Kol = rslist!M_Kol
!Takhfif = rslist!Takhfif
!JMKolT = rslist!JMKolT
!JMA = rslist!JMA
!JMABJKol = rslist!JMABJKol
.Update
End With
rslist.MoveNext

Loop
rslist.Close

shafie-rayaneh
پنج شنبه 26 شهریور 1394, 11:31 صبح
من کدها رو وارد کردم و تیبل رو عوض کردم ولی داخل دیتاگرید adodc4 فقط یه ردیف میاد که داخل فیلداش صفره

Dim i&
Dim rslist As Recordset

Adodc3.RecordSource = "Select * From TBLFaktor where Factor_ID = " & Adodc2.Recordset!Factor_ID
Adodc3.Refresh

Set rslist = Adodc3.Recordset

Do Until rslist.EOF

With Form9.Adodc4.Recordset
.AddNew
!Barkod = rslist!Barkod
!NameKala = rslist!NameKala
!Tedad = rslist!Tedad
!Vahed = rslist!Vahed
!Mablagh = rslist!Mablagh
!M_Kol = rslist!M_Kol
!Takhfif = rslist!Takhfif
!JMKolT = rslist!JMKolT
!JMA = rslist!JMA
!JMABJKol = rslist!JMABJKol
.Update
End With
rslist.MoveNext
Loop
rslist.Close

vbhamed
پنج شنبه 26 شهریور 1394, 12:16 عصر
سلام
شما باید اون برنامتون + بانک رو بزارید تا بشه چک کرد، همون قسمت برنامه رو به صورت یک پروژه کامل بزارید

shafie-rayaneh
پنج شنبه 26 شهریور 1394, 16:28 عصر
135292
پروژه ارسال شد
ممنون میشم که نگاه بندازید و راهنمایی کنید

vbhamed
جمعه 27 شهریور 1394, 09:11 صبح
سلام

کامپوننتهای مورد استفاده در پروژه غیر از کریستال ریپورت رو هم قرار بدید، ضمنا از چه ورژنی از کریستال ریپورت استفاده کردین ؟
و یک توضیح مختصر هم راجع به نحوه کارکرد برنامتون

shafie-rayaneh
جمعه 27 شهریور 1394, 12:42 عصر
کریستال ریپورت 10 به جز کریستال از کامپوننت دیگه ای استفاده نکردم همون کامپوننت های ادو که در vb موجوده.
ماژولها رو هم که گذاشتم .
من توی دیتابیست سه تا تیبل رو به هم وصل کردم و تیبل شماره فاکتور وسط قرار گرفته تیبل مشتری و تیبل فاکتور بهش وصل میشه مشتری ثبت میشه بعدش توی قسمت صدور فاکتور و دکمه فاکتور جدید برای مشتری فرم ثبت فاکتور میاد بعدش هم فرم فاکتور که ردیف ها یکی یکی هم داخل دیتابیس تمپ ثبت میشه و هم داخل دیتابیس اصلی که طبق گفته خودتون این تمپ رو درست کردم که بتونم راحت تر گزارش کریستال ریپورت رو درست کنم بعد هم که بازگشت رو میزنیم دستوری نوشتم که دیتابیس تمپ پاک میشه و باز میاد قسمت فرم 7 که من میخوام در اون فرم که در قسمت پایین دکمه ویرایش رو گذاشتم بیاد اون فاکتوری که انتخاب می کنیم بگرده آی دی هایی که وصله بهش برای فاکتور پیدا کنه و کل اونها رو داخل دیتابیس تمپ بریزه و فرم فاکتور رو دباره نشون بده که بشه ویرایش کرد الان من با کارهایی که کردم وقتی ویرایش رو میزنیم نام مشتری و شماره فاکتور و توضیحات و غیره رو میاره ولی فقط مونده ردیفهایی که در مورد کالا هست رو نشون بده که من گفتم اینجا از شما کمک بخوام میدونم که باید با دستور do یا for باشه فقط نمیدونم چجوری به کار ببرم. بازم ممنون هر چه سریعتر جواب بدین ممنون میشم.

vbhamed
جمعه 27 شهریور 1394, 15:16 عصر
سلام

شما از کامپوننتهای کریستال، xp style progress, xp style components, activereports 2 استفاده کردین باید اونها رو بزارید البته کریستال نیاز نیست

shafie-rayaneh
جمعه 27 شهریور 1394, 16:17 عصر
آره میخواستم اینها رو استفاده کنم ولی فقط توی پروژه آوردم بعد برش داشتم الان توی پروژه من هیچ کدوم از اینها نباید باشه xp style progress, xp style components, activereports 2

vbhamed
جمعه 27 شهریور 1394, 18:13 عصر
سلام

لطفا مراحل زیر رو انجام بدین
١ - پوشه اصلی برنامه خودتون رو حتما تغییر نام بدین
٢ - از این پوشه ای که ضمیمه کردین فایل پروژه رو باز کنید و خطاهای داده شده رو رفع کنید و سپس ارسال نمایید

shafie-rayaneh
شنبه 28 شهریور 1394, 15:27 عصر
مرسی من سه تا فایل dll برای ساعت و تاریخ گذاشته بودم اونها رو براتون گذاشتم.

shafie-rayaneh
شنبه 28 شهریور 1394, 15:33 عصر
اونطور که این دو روز من جستجو کردم دیتابیسم پر نمیشه فکر کنم مشکل از یه جای دیگست. احتمالاً یعنی حتماً اون کدی که اول شما فرستادی باید درست باشه.
چون وقتی که من یکم توی کدهام دستکاری می کنم فیلدهای جدول تمپم پر میشه و مشکل حله ولی مشکل دیگه ای که هست من باید بعد از اینکه شماره و تاریخ فاکتور را دادم وارد فاکتور بشم و بعد ردیف ها رو وارد کنم و در آخر ثبت کلی بزنم که اگر شما در برنامه نگاه کنید ثبت آخر رو که می زنم یه مشکلی داره و adodc3 دیتا رو وارد دیتابیس نمی کنه ولی وقتی که adodc3 رو میزارم روی ثبت اول یعنی اونجایی که ردیف های فاکتور ثبت میشه درست کار می کنه ولی باز برای adodc2 به مشکل بر می خورم ممنون میشم راهنمایی کنید.

shafie-rayaneh
شنبه 28 شهریور 1394, 15:37 عصر
درستش اینه که در قسمت آخر یعنی ثبت کامل فاکتور اطلاعات فرم شماره 3 مشخصات فاکتور ذخیره بشه و بعد از اون ردیف ها به adodc3 وارد بشه ولی وقتی اون کار رو می کنم فرم 3 درست ذخیره میشه ولی ردیفهای فاکتور با adodc3 ذخیره نمیشه

vbhamed
یک شنبه 29 شهریور 1394, 12:15 عصر
سلام
تو فایل آخرتون باز هم ocx ها رو نذاشتید
من تاکید کردم پوشه های قبلی برنامتون رو rename کنید و بعد پروژه ارسالی رو چک کنید چون اونطوری از همون مسیر قبلی ها می‌خونه

shafie-rayaneh
یک شنبه 29 شهریور 1394, 13:57 عصر
من همه این کارها رو کردم فقط ارور تاریخ و ساعت میداد که اون dll ها رو گذاشتم حالا شما یه نگاه به این کد بندازید ببیند من کجا شو اشتباه نوشتم. ممنون

Private Sub Command3_Click()
If Edit = False Then
' æÇÑÏ ˜ÑÏä ÇØáÇÚÇÊ ÏÑ ÊíÈá ÔãÇÑå ÝÇ˜ÊæÑ
Adodc2.Refresh
Adodc2.Recordset.AddNew
Adodc2.Recordset.Fields!Moshtari_ID = Customer_ID
Adodc2.Recordset.Fields!SH_Faktor = Val(Text1.Text)
Adodc2.Recordset.Fields!Tarikh_Faktor = Text2.Text
If Option1.Value = True Then
Adodc2.Recordset.Fields!Naghdi = "äÞÏí"
Else
Adodc2.Recordset.Fields!Naghdi = "ÛíÑ äÞÏí"
End If
Adodc2.Recordset.Fields!Tozih = Text7.Text
Adodc2.Recordset.Fields!Darsad = Val(Text14.Text)
Adodc2.Recordset.Fields!JKMK = Val(Text1.Text)
Adodc2.Recordset.Fields!JKT = Val(Text2.Text)
Adodc2.Recordset.Fields!JKMKT = Val(Text15.Text)
Adodc2.Recordset.Fields!JKAM = Val(Text16.Text)
Adodc2.Recordset.Fields!JKAMJK = Val(Text17.Text)
Adodc2.Recordset.Fields!JAMKOLFaktor = Val(Label19.Caption)
Adodc2.Recordset.Update
IDF = Adodc2.Recordset.Fields("Factor_ID")
' æÇÑÏ ˜ÑÏä ÇØáÇÚÇÊ ÏÑ ÊíÈá ÝÇ˜ÊæÑ
Adodc3.Refresh
Adodc3.Recordset.AddNew
Adodc3.Recordset.Fields("Factor_ID") = IDF
Adodc3.Recordset.Fields!Barkod = Text4.Text
Adodc3.Recordset.Fields!NameKala = Text5.Text
Adodc3.Recordset.Fields!Tedad = Val(Text6.Text)
Adodc3.Recordset.Fields!Vahed = Combo1.Text
Adodc3.Recordset.Fields!Mablagh = Val(Text8.Text)
Adodc3.Recordset.Fields!M_Kol = Val(Text9.Text)
Adodc3.Recordset.Fields!Takhfif = Val(Text10.Text)
Adodc3.Recordset.Fields!JMKolT = Val(Text11.Text)
Adodc3.Recordset.Fields!JMA = Val(Text12.Text)
Adodc3.Recordset.Fields!JMABJKol = Val(Text13.Text)
Adodc3.Recordset.Update
' ---------------------------------------------------
' æÇÑÏ ˜ÑÏä ÇØáÇÚÇÊ ÏÑ ÊíÈá Êã
Adodc5.Refresh
Adodc5.Recordset.AddNew
Call copytotemp
Adodc5.Recordset.Update
MsgBox "ÝÇ˜ÊæÑ ËÈÊ ÔÏ"
ElseIf Edit = True Then

If Option1.Value = True Then
Adodc2.Recordset.Fields!Naghdi = "äÞÏí"
Else
Adodc2.Recordset.Fields!Naghdi = "ÛíÑ äÞÏí"
End If
Adodc2.Recordset.Fields!Tozih = Text7.Text
Adodc2.Recordset.Fields!Darsad = Val(Text14.Text)
Adodc2.Recordset.Fields!JKMK = Val(Text1.Text)
Adodc2.Recordset.Fields!JKT = Val(Text2.Text)
Adodc2.Recordset.Fields!JKMKT = Val(Text15.Text)
Adodc2.Recordset.Fields!JKAM = Val(Text16.Text)
Adodc2.Recordset.Fields!JKAMJK = Val(Text17.Text)
Adodc2.Recordset.Fields!JAMKOLFaktor = Val(Label19.Caption)
Adodc2.Recordset.Update
'Adodc3.Recordset.Fields("Factor_ID") = IDF
Adodc3.Recordset.Fields!Barkod = Text4.Text
Adodc3.Recordset.Fields!NameKala = Text5.Text
Adodc3.Recordset.Fields!Tedad = Val(Text6.Text)
Adodc3.Recordset.Fields!Vahed = Combo1.Text
Adodc3.Recordset.Fields!Mablagh = Val(Text8.Text)
Adodc3.Recordset.Fields!M_Kol = Val(Text9.Text)
Adodc3.Recordset.Fields!Takhfif = Val(Text10.Text)
Adodc3.Recordset.Fields!JMKolT = Val(Text11.Text)
Adodc3.Recordset.Fields!JMA = Val(Text12.Text)
Adodc3.Recordset.Fields!JMABJKol = Val(Text13.Text)
Adodc3.Recordset.Update
' ---------------------------------------------------
Adodc5.Refresh
Adodc5.Recordset.AddNew
Call copytotemp
Adodc5.Recordset.Update
MsgBox "ÝÇ˜ÊæÑ æíÑÇíÔ ÔÏ ÔÏ"
End If
End Sub

shafie-rayaneh
یک شنبه 29 شهریور 1394, 14:19 عصر
کد 25 تا 38 اشتباهه چون وقتی که رکوردها توی تیبل تمپ ذخیره میشه دیگه تکست ها خالیه و چیزی توی adodc3 ذخیره نمیشه ممنون میشه یه کدی بزارید که داخل adodc4 که مربوط به دیتابیس تمپ میشه و تیبل TBL1 رو بگرده و هر رکوردی که توش هست بیاره با آی دی فاکتوری که داخل متغیر IDSF است داخل تیبل TBLFaktor در دیتابیس اصلی بریزه.

vbhamed
دوشنبه 30 شهریور 1394, 06:17 صبح
سلام

یکبار فایل ضمیمه پست شماره 13 رو خودتون دانلود کنید و ببینید
شما dll ها رو اصلا ضمیمه نکردین و دوباره خود پروژه رو گذاشتین

shafie-rayaneh
دوشنبه 30 شهریور 1394, 16:53 عصر
135385
سلام این هم ocx

shafie-rayaneh
دوشنبه 30 شهریور 1394, 21:37 عصر
من میخوام از adodc4 اطلاعات رو بریزم روی adodc3 میشه بگید مشکل من کجاست

Dim i&
Dim rslist As Recordset
Adodc4.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\RastinPlastTemp.mdb;"
Adodc4.RecordSource = "Select * From TBL1"
Adodc4.Refresh
Adodc3.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\RastinPlast.mdb;"
Adodc3.RecordSource = "Select * From TBLFaktor where Factor_ID = " & Adodc2.Recordset!Factor_ID
Adodc3.Refresh

Set rslist = Adodc4.Recordset

Do Until rslist.EOF

With Adodc3.Recordset
.AddNew
!Factor_ID = IDF
!Barkod = rslist!Barkod
!NameKala = rslist!NameKala
!Tedad = rslist!Tedad
!Vahed = rslist!Vahed
!Mablagh = rslist!Mablagh
!M_Kol = rslist!M_Kol
!Takhfif = rslist!Takhfif
!JMKolT = rslist!JMKolT
!JMA = rslist!JMA
!JMABJKol = rslist!JMABJKol
.Update
End With
rslist.MoveNext
Loop
rslist.Close