منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مشكلة في ادخال قيمة موجودة في textbox - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41)
+--- الموضوع : مشكلة في ادخال قيمة موجودة في textbox (/showthread.php?tid=16069)



مشكلة في ادخال قيمة موجودة في textbox - نسيم - 07-06-16

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

يوجد لدي جدول في احد حقوله وهو رقم العميل  ، عند ادخال القيمة الخاصة به والتي يأخذها من مربع نص تدخل القيمة فارغة على الرغم من احتواء مربع النص على القيمة  ، حيث في الكود اريده  أن ياخذ القيمة اثناء تنفيذ امر الحفظ  حيث يذهب الى قاعدة البيانات و  وبعد مراجعة شرط معين تظهر  القيمة في مربع النص  هذا  . وعند الضغط على زر حفظ عندي ارى القيمة المستدعاة تظهر في مربع النص ولكن  القيمة تدخل فارغة في الجدول  

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

 Dim cominsert1 As New SqlCommand("insert into table1 (name_id) values ('" & TextBox18.Text & "')", con)


        TextBox18.Text = 1
        con.Open()
        cominsert1.ExecuteNonQuery()
        con.Close()
ارجو توضيح الخطأ الموجود
 ولكم جزيل الشكر


RE: مشكلة في ادخال قيمة موجودة في textbox - boudyonline - 07-06-16

أخي الفاضل :


أرفق المثال افضل للتعديل عليه


RE: مشكلة في ادخال قيمة موجودة في textbox - نسيم - 08-06-16

(07-06-16, 04:54 PM)boudyonline كتب : أخي الفاضل :


أرفق المثال افضل للتعديل عليه

تفضل المثال مرفق


RE: مشكلة في ادخال قيمة موجودة في textbox - boudyonline - 08-06-16

أين قاعدة البيانات ؟


RE: مشكلة في ادخال قيمة موجودة في textbox - نسيم - 12-06-16

كنت مرفقة قاعدة البيانات بامتداد .bak  تفضل قاعدة البيانات مرفقة


RE: مشكلة في ادخال قيمة موجودة في textbox - حريف برمجة - 12-06-16

جربت المثال شغال تم الحفظ .. ووجدت ما قمت بحفظه في الجدول .

ولا اعلم ماهو المطلوب ؟؟؟


RE: مشكلة في ادخال قيمة موجودة في textbox - نسيم - 13-06-16

ما اريده هو ادخال قيمة رقم العميل ولكنها هنا لا تأخذ قيمة وتدخل فارغة واذا كانت هنا تأخذ القيمة صفر  فذلك لان   نوع الحقل int ولو قمت بتغيير نوع الحقل  الى nvarchar  سيأخذ قيمة  null  .
*********
وانا في الكود اريده ان يقوم بحفظ الاسم  و رقم العميل ويأخذ رقم العميل قيمة تبدأ هنا برقم واحد  
واضع شرطا عند الحفظ وهو : اذا اردت ان احفظ نفس الاسم متكرر مرة اخرى والذي له رقم 1 مثلا  ان يذهب الى قاعدة البيانات قبل تنفيذ أمر الحفظ  ويبحث عن الاسم لو وجده يقوم ياستدعاء رقم العميل الخاص به وهو 1  ثم يحفظه مع الاسم وباقي البيانات الجديدة لنفس العميل في سجل اخر بنفس الرقم  وهو 1 اما اذا بحث عن الاسم ولم يجده في قاعدة البيانات يقوم  ياعطائه رقم عميل جديد وهو 2 وهكذا بالتسلسل  
********
ولكن هنا لا يدخل الفيمة الخاصة برقم العميل اصلا من البداية
ارجو المساعدة  وشكرا


RE: مشكلة في ادخال قيمة موجودة في textbox - الوادي - 13-06-16

يا نسيم،

اول شيء اختبر الموجود في مربع النص إذا كان يحتوي رقم.
بعدين استخدم البارامتر لادخال البيانات مثل هذي الطريقة
PHP كود :
If Not IsNumeric(TextBox18.TextThen
    MsgBox
("تأكد من الرقم")
    Return
End If

Dim cominsert1 As New SqlCommand("insert into table1 (name_id) values (@id)"con)
cominsert1.Parameters.AddWithValue("@id"Val(TextBox18.Text))

con.Open()
cominsert1.ExecuteNonQuery()
con.Close() 

لماذا هذا السطر
TextBox18.Text = 1


RE: مشكلة في ادخال قيمة موجودة في textbox - نسيم - 20-06-16

(13-06-16, 03:49 PM)الوادي كتب : يا نسيم،

اول شيء اختبر الموجود في مربع النص إذا كان يحتوي رقم.
بعدين استخدم البارامتر لادخال البيانات مثل هذي الطريقة
PHP كود :
If Not IsNumeric(TextBox18.TextThen
    MsgBox
("تأكد من الرقم")
 
   Return
End 
If

Dim cominsert1 As New SqlCommand("insert into table1 (name_id) values (@id)"con)
cominsert1.Parameters.AddWithValue("@id"Val(TextBox18.Text))

con.Open()
cominsert1.ExecuteNonQuery()
con.Close() 

لماذا هذا السطر
TextBox18.Text = 1

انا اريده ان يأخذ المتغير اثناء عملية الحفظ بعد جملة insert وقبل con.Open()
cominsert1.ExecuteNonQuery()
con.Close()   كما في المثال الذي قمت بإرفاقه بعد ما طلبتوا مني ارفاق المثال للتوضيح اكثر وايضا الذي قمت بشرحه في التعليق اعلاه  ..وهذا المثال الذي يحتوي السطر TextBox18.Text = 1 هو كود مختصر افترض فيه انها  قيمةالمتغبر المستدعاة من فاعدة البيانات واضعها كما اريدها ان تكون بعد جملة insert  ولكنه لا يدخلها في قاعدة البيانات حتى لو اعطيته فيمة ثابتة كما في هذا السطر 


RE: مشكلة في ادخال قيمة موجودة في textbox - الوادي - 20-06-16

يا نسيم،

اعتمادا على المرفق (newfolder.rar) وقاعدة البيانات المرفقة (New folder (4).rar)

الخطأ اللي عندك أنك وضعت قيمة name_id داخل علامات  ' ' والتي مخصصة للنصوص

عموما وضعت لك طريقة أرجو أن تفيد في طريقة ترتيب الكود مستقبلا
لاحظ أنه تم استخدام Parameters لأنها الطريقة الصحيحة لإدراح البيانات
PHP كود :
Imports System.Data.SqlClient

Public Class Form1

    Private Sub Button1_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click

        
' التأكد من محتوى مربع النص المخصص للرقم '
 
       If Not IsNumeric(Me.TextBox1.TextThen
            MsgBox
("تأكد من الرقم")
 
           Return
        End 
If


 
       ' التأكد من وجود الاسم في قاعدة البيانات '
 
       If isExist(Me.TextBox2.TextThen

            Dim mssg 
As String String.Format("يوجد بيانات باسم السيد {0}{1}{2}{3}{4} هل تريد ادخال بيانات اخرى لنفس الشخص ؟"vbCrLfMe.TextBox2.Text.TrimvbCrLfSpace(4), Space(4))
 
           Dim style As MsgBoxStyle MsgBoxStyle.DefaultButton2 Or MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxRtlReading Or MsgBoxStyle.MsgBoxRight

            If MsgBox
(mssgstyle"برنامج") = MsgBoxResult.Yes Then

                
' إضافة الاسم إلى قاعدة البيانات مع التأكد من نجاح الإضافة '
 
               If insertName(Val(Me.TextBox1.Text), Me.TextBox2.TextThen
                    MessageBox
.Show("تم الحفظ بنجاح""برنامج "MessageBoxButtons.OK)

 
               End If

 
           End If

 
       Else

            
' إضافة الاسم إلى قاعدة البيانات مع التأكد من نجاح الإضافة '
 
           If insertName(Val(Me.TextBox1.Text), Me.TextBox2.TextThen
                MessageBox
.Show("تم الحفظ بنجاح""برنامج "MessageBoxButtons.OK)
 
           End If
 
       End If

 
       TextBox1.Clear()
 
       TextBox2.Clear()
 
       TextBox1.Focus()

 
   End Sub

    
' التأكد من وجود الاسم في قاعدة البيانات بارجاع النتيجة '
 
   Private Function isExist(mName As String) As Boolean
        Dim selectCommand 
As New SqlCommand("SELECT COUNT(*) FROM [table1] WHERE [name]=@p1"con)
 
       selectCommand.Parameters.AddWithValue("@p1"mName.Trim)

 
       If con.State <> ConnectionState.Open Then con.Open()
 
       Dim selRet As Integer selectCommand.ExecuteScalar
        con
.Close()

 
       If selRet 0 Then
            Return True
        Else
            Return False
        End 
If
 
   End Function

 
   ' إضافة الاسم إلى قاعدة البيانات مع إرجاع نجاح الإضافة من فشلها '
 
   Private Function insertName(mID As IntegermName As String) As Boolean
        Dim insertCommand 
As New SqlCommand("INSERT INTO [table1] ([name_id], [name]) values (@p1, @p2)"con)
 
       insertCommand.Parameters.AddWithValue("@p1"mID)
 
       insertCommand.Parameters.AddWithValue("@p2"mName.Trim)

 
       If con.State <> ConnectionState.Open Then con.Open()
 
       Dim insRet As Integer insertCommand.ExecuteNonQuery
        con
.Close()

 
       If insRet 0 Then
            Return True
        Else
            Return False
        End 
If
 
   End Function

End Class 

لاحظت أن name_id ليس ترقيم تلقائي، هل أنت قاصد هذا الوضع؟
مع أن المفروض وجود حقل ترقيم تلقائي لزوم التحديث أو الحذف.

السطر
If con.State = ConnectionState.Open Then con.Close
يقوم بغلق الاتصال إذا كان مفتوح، السؤال لماذا تغلقه طالما أنه مفتوح، وضعت لك أسلوب أفضل وهو
If con.State <> ConnectionState.Open Then con.Open