(16-11-13, 09:35 PM)asto كتب : عليك يا اخي ان تعمل ربط و ادخال ايضا
ففي القسم العام
Dim db As DAO.Database
Dim Rs1 As DAO.Recordset
و في كوماند للادخال مثلا
كود :
Set db = DBEngine.OpenDatabase(App.Path & "\db1.MDB", False, False)
Set Rs1 = db.OpenRecordset("Select * From [soft]", dbOpenDynaset)
rs1.AddNew
rs1!رقم الصنف=text1.text
rs1.update
و استبدل رقم الصنف بكلمة انكليزية
يعني المهم ان تتعامل مع rs1
--------------------------------------------------------------------------------
اخي العزيز
إجابة غير موفقه !!!
السوال كان يدور حول تعامل مع فيلكس جريد ؟؟
انا اعرف كيف اربط تعامل مع فيلكس جريد بقاعدة البيانات ولكن السوال كما هوا في المشاركه الاولى حول كيفية التعامل مع تعامل مع فيلكس جريد
إذا ضاقت بك الأحوال يوماً فَثِقْ بالواحِدِ الفَرْدِ العَلِيِّ
استعمل الأكواد التالية بدل الأكواد في المرفق. مع الملاحظات التالية:
كود تهيئة الـ FlexGrid لا يمكن أن يكون في الحدث Form_Resize و إلا فإنه سيتم تنفيذه كلما تغير حجم النافذة. مكانه الصحيح هو الحدث Form_Load.
معالجة مفاتيح التحكم (مثل Enter و BackSpace و Delete) تتم عادة في الحدث KeyDown أو الحدث KeyUp. أما الحدث KeyPress فيستعمل لعالجة مفاتيح الكتابة (الحروف و الأرقام و الرموز الأخرى).
تمت إضافة استعمال المفتاح Delete لمسح محتوى الخلية بأكمها.
في عمود رقم الصنف يمكن إدخال الأرقام فقط و بطول 9 خانات (طبعاً يمكنك تعديل ذلك في الكود).
عند إنشاء صف جديد في الـ FlexGrid يتم الانتقال إليه و ضمان ظهوره (بدل بقائه مختفياً في الأسفل).
عند كتابة رقم في العمود الأول و ضغط Enter يتم البحث عنه في قاعدة البيانات و جلب بقية البيانات، أو إظهار رسالة بعدم وجود صنف بهذا الرقم.
كود :
Private Sub Form_Load()
Set db = OpenDatabase(App.Path & "\db1.mdb", 2)
Set rs = db.OpenRecordset("soft", 2)
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
rs.Close
db.Close
End Sub
Private Sub fox_KeyDown(KeyCode As Integer, Shift As Integer)
With fox
Select Case KeyCode
Case vbKeyBack
If .Text <> "" Then .Text = Left$(.Text, (Len(.Text) - 1))
Case vbKeyDelete
.Text = ""
Case vbKeyReturn
If .Col = 0 Then
If IsNumeric(.Text) Then
rs.FindFirst "iD = " & .Text
If rs.NoMatch Then
MsgBox "لا يوجد صنف بهذا الرقم"
Else
.TextMatrix(.Row, 1) = rs("chs")
.TextMatrix(.Row, 2) = rs("no")
.TextMatrix(.Row, 3) = rs("vbn")
.TextMatrix(.Row, 4) = rs("CTT")
End If
End If
ElseIf .Col = (.Cols - 1) Then
If .Row = (.Rows - 1) Then .Rows = .Rows + 1
.Col = 0
.Row = .Row + 1
If .Row > 12 Then .TopRow = .Rows - 13
Else
.Col = .Col + 1
End If
End Select
End With
End Sub
Private Sub fox_KeyPress(KeyAscii As Integer)
With fox
If KeyAscii > 31 Then
If fox.Col = 0 Then
If (Len(.Text) < 9) And IsNumeric(Chr$(KeyAscii)) Then
.Text = .Text + Chr$(KeyAscii)
End If
Else
.Text = .Text + Chr$(KeyAscii)
End If
End If
End With
End Sub
(17-11-13, 09:46 PM)ناجي إبراهيم كتب : السلام عليكم...
استعمل الأكواد التالية بدل الأكواد في المرفق. مع الملاحظات التالية:
كود تهيئة الـ FlexGrid لا يمكن أن يكون في الحدث Form_Resize و إلا فإنه سيتم تنفيذه كلما تغير حجم النافذة. مكانه الصحيح هو الحدث Form_Load.
معالجة مفاتيح التحكم (مثل Enter و BackSpace و Delete) تتم عادة في الحدث KeyDown أو الحدث KeyUp. أما الحدث KeyPress فيستعمل لعالجة مفاتيح الكتابة (الحروف و الأرقام و الرموز الأخرى).
تمت إضافة استعمال المفتاح Delete لمسح محتوى الخلية بأكمها.
في عمود رقم الصنف يمكن إدخال الأرقام فقط و بطول 9 خانات (طبعاً يمكنك تعديل ذلك في الكود).
عند إنشاء صف جديد في الـ FlexGrid يتم الانتقال إليه و ضمان ظهوره (بدل بقائه مختفياً في الأسفل).
عند كتابة رقم في العمود الأول و ضغط Enter يتم البحث عنه في قاعدة البيانات و جلب بقية البيانات، أو إظهار رسالة بعدم وجود صنف بهذا الرقم.
كود :
Private Sub Form_Load()
Set db = OpenDatabase(App.Path & "\db1.mdb", 2)
Set rs = db.OpenRecordset("soft", 2)
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
rs.Close
db.Close
End Sub
Private Sub fox_KeyDown(KeyCode As Integer, Shift As Integer)
With fox
Select Case KeyCode
Case vbKeyBack
If .Text <> "" Then .Text = Left$(.Text, (Len(.Text) - 1))
Case vbKeyDelete
.Text = ""
Case vbKeyReturn
If .Col = 0 Then
If IsNumeric(.Text) Then
rs.FindFirst "iD = " & .Text
If rs.NoMatch Then
MsgBox "لا يوجد صنف بهذا الرقم"
Else
.TextMatrix(.Row, 1) = rs("chs")
.TextMatrix(.Row, 2) = rs("no")
.TextMatrix(.Row, 3) = rs("vbn")
.TextMatrix(.Row, 4) = rs("CTT")
End If
End If
ElseIf .Col = (.Cols - 1) Then
If .Row = (.Rows - 1) Then .Rows = .Rows + 1
.Col = 0
.Row = .Row + 1
If .Row > 12 Then .TopRow = .Rows - 13
Else
.Col = .Col + 1
End If
End Select
End With
End Sub
Private Sub fox_KeyPress(KeyAscii As Integer)
With fox
If KeyAscii > 31 Then
If fox.Col = 0 Then
If (Len(.Text) < 9) And IsNumeric(Chr$(KeyAscii)) Then
.Text = .Text + Chr$(KeyAscii)
End If
Else
.Text = .Text + Chr$(KeyAscii)
End If
End If
End With
End Sub
نرجو الاستفادة و السلام.
--------------------------------------------------------
اخي العزيز ناجي ابراهيم
السلام عليكم ورحمة وبركاته
لك من الف شكر وتقدير والله يحفظكم ويرعاكم
إذا ضاقت بك الأحوال يوماً فَثِقْ بالواحِدِ الفَرْدِ العَلِيِّ