تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] كود بسيط ولم استطع تجاوزه
#1
السلام عليكم ورحمة الله وبركاته

نفع الله بكم اخوتي الكرام 

لدي مشكلة واجهتني وانا بصدد عمل مشروع برنامج لإدارة المستودعات للمنضمة التي اعمل بها 
حيث انني لست محترف ولكن لإثبات نفس في منصبي الحالي كمسئول المستودعات والمشتريات 

لا أطيل عيكم احبتي 

قد تم عمل قاعد بيانات اكسس  باسم storemng بداخلها جدول بإسم product وهو يحمل ثلاث أعمدة 
الأول  nump/ رقم الصنف من نوع رقم صحيح
الثاني namep/ اسم الصنف من نوع نص 
الثالث now / الكمية المتوفرة من نوع رقم صحيح 



أما الفورم متكون من 3 تيكست بوكس و 3 زر بوتون 

وفي الجينرال تم عمل الكود التالي 

Imports System.Data

Imports System.Data.OleDb

أما في داخل الفورم تم عمل الكود التالي للاتصال بقاعدة البيانات حيث أن ليس لدي مشكلة في الاتصال 

 Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=storemng.accdb")


في زر الاضافة تم عمل الكود التالي 


كود :
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

       If (Integer.Parse(TextBox2.Text) AndAlso String.IsNullOrWhiteSpace(TextBox3.Text) AndAlso Integer.Parse(TextBox4.Text)) Then
           MessageBox.Show("يجب تعبئة جميع الفراغات قبل الاضافة")
           Return
       End If

       'مرحلة تعريف أمر إضافة
       Dim cmd As New OleDbCommand("insert into products (nump, namep, now) values ('& text2.text & ','" & TextBox3.Text & "','  & TextBox4.Text & ')")

     

       cmd.Connection = con
       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم إضافة الصنف بنجاح")
       TextBox2.Text = String.Empty
       TextBox3.Text = String.Empty
       TextBox4.Text = String.Empty


   End Sub
End Class

اعلم بأن الكود خطأ واتوقع الخطأ في السطر الأول 

ولكن لم استطيع معرفة الكود الخاص بتعريف الارقام وهي المشكلة التي واجهتني حيث ان التعامل مع النصوص لا يوجد مشكلة به 

فأرجو منكم تعديل الكود حتى يتوافق مع زر الاضافة ولكم جزيل الشكر 
الرد }}}
تم الشكر بواسطة:
#2

السلام عليكم ورحمة الله

شوف إذا كان الحقل رقم لا تضعه داخل علامات(' ') وإن شاء تمام
PHP كود :
Dim cmd As New OleDbCommand(" INSERT INTO  [products] ([nump], [namep], [now]) VALUES ( '" Me.TextBox2.text "' ,'" Me.TextBox3.Text "' ,'" Me.TextBox4.Text "' ) "con

لكن هذه الطريقة أفضل ومريحة وذكرها عدة أعضاء هنا
PHP كود :
' مرحلة تعريف أمر إضافة
Using cmd As New OleDbCommand(" INSERT INTO [products] ( [nump], [namep], [now]) VALUES (@nump, @namep, @now)", con)
    cmd.Parameters.AddWithValue("@nump", Me.TextBox2.text)
    cmd.Parameters.AddWithValue("@namep", Me.TextBox3.Text)
    cmd.Parameters.AddWithValue("@now", Me.TextBox4.Text)
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
End Using 

الرد }}}
تم الشكر بواسطة: kslawy
#3
أسأل الله العلي القدير أن يوفقك ونفع بك ورحم والديك

ما قصـرت اخوي الوليد كود صحيح وتم العمل به جزاك الله خير

دمت سالما

اعتذر منك كيف اظهر مسج بوكس بعدم ترك البيانات فارغة
الرد }}}
تم الشكر بواسطة: الوليد ☺
#4

السلام عليكم ورحمة الله

شوف هذا التعديل كامل وإن شاء الله يكون تمام
نلاحظ ان مربعات النص المخصصة للأرقام وضعناها في دالة Val
ومربعات النص المخصصة للنصوص وضعنا آخرها Trim عشان نحذف أي مسافات زائدة قبلها أو بعدها
PHP كود :
Private Sub Button6_Click(sender As ObjectAs EventArgs)

    If (
Val(Me.TextBox2.Text) = 0) Or (Me.TextBox3.Text.Trim "") Or (Val(Me.TextBox4.Text) = 0Then
        MessageBox
.Show("يجب تعبئة جميع الفراغات قبل الاضافة")
        Exit 
Sub
    End 
If

    Try

        
'مرحلة تعريف أمر إضافة
        Using cmd As New OleDbCommand("INSERT INTO [products] ([nump], [namep], [now]) values (@nump, @namep, @now)", con)
            cmd.Parameters.AddWithValue("@nump", Val(Me.TextBox2.Text))
            cmd.Parameters.AddWithValue("@namep", Me.TextBox3.Text.Trim)
            cmd.Parameters.AddWithValue("@now", Val(Me.TextBox4.Text))
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
        End Using

        MessageBox.Show("تم إضافة الصنف بنجاح")

        Me.TextBox2.Text = String.Empty
        Me.TextBox3.Text = String.Empty
        Me.TextBox4.Text = String.Empty

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub 

الرد }}}
تم الشكر بواسطة: kslawy
#5
الله يسعد ايامك ومن يعز عليك اخوي الوليد فعلا ماقصرت

جزاك الله خير .. ولك دعوة بظهر الغيب
الرد }}}
تم الشكر بواسطة: الوليد ☺
#6

السلام عليكم ورحمة الله

جزاك الله خير على الدعوة الطيبة ولك بالمثل دعوة بظهر الغيب

الرد }}}
تم الشكر بواسطة:
#7
اخي الوليد ،،، لم استغنى عن خدماتك

عملت فورم خاص لفواتير الطلب بإسم فاتورة صرف عهدة ومواد قرطاسية

مكونة من تيكست بوكس لرقم الصنف واخر لاسم الصنف واخر لوحدة الصنف وايضا للكمية

طلبي هو عند كتابة رقم الصنف والضغط على زر أمر ( اظهار البيانات ) يتم ملئ اسم الصنف والوحدة والكمية تلقائي من قاعدة البيانات التي لدي علم ان الجدول في القاعدة مكون من رقم الصنف واسم الصنف والوحدة والكمية

واعتذر على طلباتي التي سوف تكثر ههههه
الرد }}}
تم الشكر بواسطة:
#8

السلام عليكم ورحمة الله

الحمد لله، ما فيها شيء، الي نقدر عليه إن شاء الله ما نبخل،

هذا مثال إن شاء الله يكون ما طلبت،

توجد فيه دالة GetItemInfo من أحد مشاريع الأخوة ترسل لها الرقم وترجع لك بسطر بيانات وليس جدول، وهذا يسهل قراءته
مربع النص الأول تكتب الرقم وتضغط الزر وبعدها إذا وجد الصنف تعبئ مربع النص الثاني بالاسم والثالث بالكمية والرابع بالوحدة
PHP كود :
Imports System.Data.OleDb

Public Class Form1

    Dim conn 
As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Database1.accdb;")

    Private 
Sub Button1_Click(sender As System.ObjectAs System.EventArgsHandles Button1.Click
        Me
.TextBox2.Clear()
        
Me.TextBox3.Clear()
        
Me.TextBox4.Clear()

        
Dim row As DataRow GetItemInfo(Val(Me.TextBox1.Text))
        If 
row IsNot Nothing Then
            Me
.TextBox2.Text row("name")
            
Me.TextBox3.Text row("quantity")
            
Me.TextBox4.Text row("unit")
        
End If

     
End Sub


    
' قراءة بيانات المادة من رقمها وتأتي على شكل سطر بيانات وليس جدول '
    
Public Function GetItemInfo(id As Integer) As DataRow
        
Try
            
Using da As New OleDbDataAdapter("SELECT * FROM [table1] WHERE [id] = @id "conn)
                
da.SelectCommand.Parameters.AddWithValue("@id"id)
                
Using myDatatable As New DataTable
                    
If da.Fill(myDatatable) > 0 Then Return myDatatable.Rows(0)
                
End Using
            End Using
        
Catch ex As Exception
            MsgBox
(ex.Message)
        
End Try
    
End Function

End Class 

الرد }}}
تم الشكر بواسطة: kslawy
#9
جزاك الله خير اخوي الوليد م قصرت جعلها الله في ميزان حسناتك

الكود تم بنجاح ولله الحمد شكرا لك
الرد }}}
تم الشكر بواسطة: الوليد ☺



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم