السلام عليكم ورحمة الله وبركاته ...
ممكن توضيح لبعض الجمل في هذا الكود طبعا بتلاحظون ان الكود طويل !
للان كود نموذجين لكنهم يعملون على شاشة واحدة وليس المطلوب هو شرح الكود بالكامل وإنما اجزاء منه ,,
وقبل الاطلاع على هذا الكود اود أن اوضح نقطة مهمه وهي ان هذا الكود عبارة عن كود نموذج متصل بقاعدة بيانات أكسيس ,,,
الشيء الاخر هو أنا أريد الاجابة على بعض الاسئلة وليس شرح الكود بالكامل .......... بعض الاجزاء فقط
والاسئلة هي كالتالي
Private Sub Command3_Click()
If RS.State = 1 Then RS.Close
RS.Open "select * from ven_Raw where No_inv = '" & Trim(Text1.Text) & "'", CN, adOpenStatic, adLockOptimistic
If RS.RecordCount > 0 Then
msg = MsgBox("يوجد خدمات ملحقة لهذا الحجز , هل انت متأكد من الحذف", vbYesNo)
If msg = vbYes Then
CN.Execute "Delete * from ven_Raw where No_inv = '" & Text1.Text & "'"
CN.Execute "Delete * from Det_ven_Raw where No_inv = '" & Text1.Text & "'"لية نكتب Rs.state ماذا نعني بـ state
ولماذا نضعها = 1 ماذا يعني 1
وأيضا الجملة adOpenStatic, adLockOptimistic هل هذه ترمز للانواع سجلات وماذا تعني
وماذا نعني بالجملة CN.Execute
أما الفقرة المبهمة جدا بالنسبة لي هي
Public Sub SetComboData(FildID As String, FildName As String, Tbl As String, Obj As DataCombo) Dim RS As ADODB.Recordset Dim StrSQL As String '--------------------------- Set RS = New ADODB.Recordset StrSQL = "Select [" & FildID & "]," & "[" & FildName & "]" & " from " & Tbl & "" RS.Open StrSQL, CN, adOpenStatic, adLockOptimistic Set Obj.RowSource = RS Obj.ListField = FildName Obj.BoundColumn = FildID If ResBT > 0 Then Obj.BoundText = ResBT End Sub
واليكم الكود بالكامل
Private Sub Command1_Click()
If Text1.Text = "" Then Exit Sub
RS.AddNew
RS!No_inv = Text1.Text
RS!No_ven = DataCombo1.BoundText
RS!Date_ven = Text3.Text
RS.Update
MsgBox "تم اضافة الفاتورة", vbInformation, "إضافة "
End Sub
Private Sub Command2_Click()
RS!No_inv = Text1.Text
RS!No_ven = DataCombo1.BoundText
RS!Date_ven = Text3.Text
RS.Update
MsgBox "تم تعديل بيانات الفاتورة", vbInformation, "تعديل"
End Sub
Private Sub Command3_Click()
If RS.State = 1 Then RS.Close
RS.Open "select * from ven_Raw where No_inv = '" & Trim(Text1.Text) & "'", CN, adOpenStatic, adLockOptimistic
If RS.RecordCount > 0 Then
msg = MsgBox("يوجد خدمات ملحقة لهذا الحجز , هل انت متأكد من الحذف", vbYesNo)
If msg = vbYes Then
CN.Execute "Delete * from ven_Raw where No_inv = '" & Text1.Text & "'"
CN.Execute "Delete * from Det_ven_Raw where No_inv = '" & Text1.Text & "'"
MsgBox "تم الحذف بنجاح", vbInformation, "حذف"
Text1_KeyPress (13)
End If
End If
End Sub
Private Sub Command4_Click()
If Text1.Text = "" Then
MsgBox "أختاري رقم الفاتورة من فضلك", vbInformation, "Reservation"
Else
Res_No = Text1.Text
Form2.Show
End If
End Sub
Private Sub Command5_Click()
Unload Me
End Sub
Private Sub Form_Load()
Set RS = New ADODB.Recordset
Set Rs1 = New ADODB.Recordset
Set Rs2 = New ADODB.Recordset
SetComboData "No_ven", "Ename_ven", "vendors", DataCombo1
If RS.State = 1 Then RS.Close
If RS.State = 1 Then RS.Close
RS.Open "select * from ven_Raw where No_inv = '" & Trim(Text1.Text) & "'", CN, adOpenStatic, adLockOptimistic
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
GetRecord
Else
Text1.Locked = False
Text3.Locked = False
' Text1.Text = ""
Text3.Text = ""
End If
End Sub
Function GetRecord()
If RS.State = 1 Then RS.Close
If Rs1.State = 1 Then Rs1.Close
RS.Open "select * from ven_Raw where No_inv = '" & Trim(Text1.Text) & "'", CN, adOpenStatic, adLockOptimistic
If RS.RecordCount > 0 Then
DataCombo1.BoundText = RS!No_ven
Text3.Text = RS.Fields(2)
Rs1.Open "Select Det_ven_Raw.No_raw as[رقم الخامة] ,Rawmatireals.Ename_raw as[أسم الخامة],Qu_ven as[الكمية المستوردة],Price_Raw as[سعر التوريد] from Det_ven_Raw left join Rawmatireals on Det_ven_Raw.No_raw =Rawmatireals.No_raw where No_inv = '" & Trim(Text1.Text) & "'", CN
Set DataGrid1.DataSource = Rs1
Else
MsgBox "لا يوجد بيانات", vbInformation, "خطأ"
End If
End Function
Public Sub SetComboData(FildID As String, FildName As String, Tbl As String, Obj As DataCombo)
Dim RS As ADODB.Recordset
Dim StrSQL As String
'---------------------------
Set RS = New ADODB.Recordset
StrSQL = "Select [" & FildID & "]," & "[" & FildName & "]" & " from " & Tbl & ""
RS.Open StrSQL, CN, adOpenStatic, adLockOptimistic
Set Obj.RowSource = RS
Obj.ListField = FildName
Obj.BoundColumn = FildID
If ResBT > 0 Then Obj.BoundText = ResBT
End Sub
بقية الكود
[code]Public Sub SetComboData(FildID As String, FildName As String, Tbl As String, Obj As DataCombo)
Dim RS As ADODB.Recordset
Dim StrSQL As String
'---------------------------
Set RS = New ADODB.Recordset
StrSQL = "Select [" & FildID & "]," & "[" & FildName & "]" & " from " & Tbl & ""
RS.Open StrSQL, CN, adOpenStatic, adLockOptimistic
Set Obj.RowSource = RS
Obj.ListField = FildName
Obj.BoundColumn = FildID
If ResBT > 0 Then Obj.BoundText = ResBT
End Sub
Private Sub Command1_Click()
If Rs2.State = 1 Then Rs2.Close
Rs2.Open "select * from Det_ven_Raw ", CN, adOpenStatic, adLockOptimistic
Rs2.AddNew
Rs2!No_raw = DataCombo1.BoundText
Rs2!No_inv = Res_No
Rs2!Qu_ven = Text1.Text
Rs2!Price_Raw = Text2.Text
Rs2.Update
CN.Execute "Update rawmatireals set qw_available = val(qw_available) + " & Val(Text1.Text) & " where No_raw = '" & DataCombo1.BoundText & "' "
MsgBox "تمت العملية بنجاح", vbInformation, "حفظ"
Exit Sub
errorS:
MsgBox err.Description
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
SetComboData "No_raw", "Ename_raw", "Rawmatireals", DataCombo1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Form17.GetRecord
End Sub
