View Full Version : سوال: یک مشکل در انبارداری
  
m.4.r.m
پنج شنبه 23 شهریور 1391, 12:15 عصر
سلام دوستان این عکس رو نگاه کنید 
وقتی که یک مصالح رو انتخاب می کنم می تونم بر اساس کد مصالح تعداد مصالح رو جایگزین مصالح قبلی بکنم اما وقتی مصالح بیشتر از یک ( 1 ) میشه چه جوری باید تک تک کد مصالح رو پیدا کنم و اختلاف مانده رو جایگزیم مانده بکنم عکس نوشتم چی به چیه ممنون میشم خیلی واجبه اعصابم خورد کرده . مرسی دوستان
محسن واژدی
پنج شنبه 23 شهریور 1391, 14:27 عصر
سلام علیکم
برای اینکار میتوانیم از یک حلقه استفاده کنیم تا به تعداد رکورد هایی که قصد ویرایش آنها داریم تکرار و مقدار جدید را جایگزین مقادیر قبل کند
به عنوان مثال کدی مشابه زیر:
Private Sub Command1_Click()
     SQL$ = "SELECT * FROM table_name WHERE code_msaleh='104'"
     Adodc1.Recordset.AddNew "tedad_msaleh", 15
     Adodc1.Recordset.Update
End Sub
را در یک حلقه ویرایش کرده تا برای بیشتر از یک محصول عمل کند
موفق باشید
m.4.r.m
پنج شنبه 23 شهریور 1391, 14:30 عصر
مهم اون کد 104 هستش که هر کدوم یه کد داره یعنی محصول اولی 104 محصول دومی 105 که همزمان می خوام هم 104 و هم 105 مقدارشون رو تغییر بدم
m.4.r.m
پنج شنبه 23 شهریور 1391, 15:16 عصر
من این طوری می نویسم اما فقط رکورد آخر رو تغییر میده اولی همچنان بدون تغییر می مونه
Dim k%
With MSFlexGrid1
For k = 1 To .Rows - 1
    SQL$ = "Select * From Lavazem where LavazemID=" & .TextMatrix(.Rows - 1, 3)
    Adodc3.RecordSource = SQL$
    Adodc3.Refresh
    Adodc3.Recordset.Update "Lcount", .TextMatrix(.Rows - 1, 6)
    'Adodc3.Recordset.Update
Next k
End With
.TextMatrix(.Rows - 1, 3) : شماره 3 هم ستون کد مصالح یا همون LavazemID هستش
در ضمن وقتی از AddNew استفاده می کنم چون کلید خالی می مونه خطا میده
vbhamed
پنج شنبه 23 شهریور 1391, 15:40 عصر
سلام
اين رو تست كنيد
Dim k%
 
sql$ = "Select * From Lavazem"
Adodc3.RecordSource = sql$
Adodc3.Refresh
 
With MSFlexGrid1
    For k = 1 To .Rows - 1
        Adodc3.Recordset.Find "LavazemID = " & .TextMatrix(.Rows - 1, 3)
        If Adodc3.Recordset.EOF <> True Then
            Adodc3.Recordset.Fields("Lcount").Value = .TextMatrix(.Rows - 1, 6)
            Adodc3.Recordset.Update
        End If
    Next
End With
m.4.r.m
پنج شنبه 23 شهریور 1391, 15:52 عصر
رکورد دومی یا همان آخری رو تغییر میده اما رکورد اولی همچنان بدون تغییر میمونه یکی کمک کنه بابا رفته رو اعصابم کد هاشم براتون بزارم :
جدول Lavazem
LavazemID Autonumber
Lname
Lcount
Lprice
جدول فاکتور
FactorID    int    
MoshtariID    int    
LavazemID    int    
Lname    varchar(50)    
Lcount    int    // Ekhtelaf Entekhab dar factor ba Mojodi dar nabar
Lprice    money
m.4.r.m
پنج شنبه 23 شهریور 1391, 23:17 عصر
هیچ کس هیچ راهکاری نداره واقعا چرا کسی جواب درست و حسابی نمیدن آخه اه
vbhamed
جمعه 24 شهریور 1391, 09:40 صبح
سلام
نمونه كد كه براتون گذاشتيم
اگر مشكلي هست يا تو تنظيمات Sql و يوزرهاست يا تو برنامه شما
بانك و اون تيكه برنامتون رو بزاريد تا بررسي بشه
محسن واژدی
جمعه 24 شهریور 1391, 12:12 عصر
سلام علیکم
تابع زیر هم بررسی کنین:
Public Sub UpdateDBMultiRows(vsFlexGrid As Object, sDB_File$, sTable$, sIDField_Name$, sEditField_Name$, iIDField_ColNumInFG%, iEditField_ColNumInFG%)
    On Error Resume Next
    Dim Cn, Rs, i%
    Set Cn = CreateObject("ADODB.Connection")
    Set Rs = CreateObject("ADODB.Recordset")
    
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDB_File$ & ";Persist Security Info=False"
    Rs.CursorLocation = adUseClient
    Rs.LockType = adLockOptimistic
    Rs.Open "SELECT * FROM " & sTable$, Cn
    With vsFlexGrid
        For i = 1 To .Rows - 1
            Rs.Find sIDField_Name$ & "=" & .TextMatrix(i, iIDField_ColNumInFG%)
            If Not Rs.EOF Then
                Rs.Fields(sEditField_Name$).Value = .TextMatrix(i, iEditField_ColNumInFG%)
                Rs.Update
            End If
        Next 'i
    End With
    Cn.Close
    Set Cn = Nothing
    Set Rs = Nothing
End Sub
توضیح پارامترها:
 sDB_File: آدرس بانک
 sTable: نام جدول
 sIDField_Name: فیلد آی دی مثلا LavazemID
 sEditField_Name: فیلدی که باید ویرایش ویرایش شود مثلا Lcount
 iIDField_ColNumInFG: شماره ستون در vsflexgrid که شماره های فیلد id در آن قرار دارد
 iEditField_ColNumInFG: شماره ستون در vsflexgrid که مقادیر جدید در آن قرار دارد
برای مثال اگه بخواهیم کد را طبق تصویر پست 1 بنویسیم میشود:
Private Sub Command1_Click()
    Call UpdateDBMultiRows(VSFlexGrid1, "D:\1.mdb", "Lavazem", "LavazemID", "Lcount", 3, 6)
    Adodc1.Refresh
End Sub
موفق باشید
m.4.r.m
جمعه 24 شهریور 1391, 22:16 عصر
دستتون درد نکنه مشکلم حل شد واقعا ممنونم
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.