المشاركات : 21
المواضيع 9
الإنتساب : Aug 2018
السمعة :
0
الشكر: 6
تم شكره 6 مرات في 6 مشاركات
السلام عليكم يا اخوان عندي شكلة في قاعدة البيانات و هي انه يرفض التحديث و يرسل لي
إن توليد SQL بشكل ديناميكي لـ DeleteCommand غير معتمد مقابل SelectCommand الذي لا يُرجع معلومات أي عمود مفتاح.
يا ليت تساعدوني
المشاركات : 813
المواضيع 24
الإنتساب : Oct 2012
السمعة :
228
الشكر: 1145
تم شكره 2171 مرات في 815 مشاركات
15-09-18, 05:17 PM
(آخر تعديل لهذه المشاركة : 15-09-18, 05:18 PM {2} بواسطة عبدالله الدوسري.)
وعليكم السلام
أهلا أخي SonBasel
أرجوا منك وضع تفاصيل أكثر وصور توضح شكل الجدول والأوامر التي تستخدمها
بهذة الطريقة نحتاج ساحر لمعرفة المشكلة.
المشاركات : 813
المواضيع 24
الإنتساب : Oct 2012
السمعة :
228
الشكر: 1145
تم شكره 2171 مرات في 815 مشاركات
إذا لم يخب ظني أن الجدول لا يحتوي على مفتاح أساسي ( primary key )
إذا كان لا يوجد مفتاح أساسي في الجدول ( لن تستطيع إنشاء أوامر الحذف + التحديث ) بشكل ديناميكي
المشاركات : 50
المواضيع 0
الإنتساب : Sep 2018
السمعة :
12
الشكر: 121
تم شكره 181 مرات في 75 مشاركات
(15-09-18, 11:50 PM)عبدالله الدوسري كتب : إذا لم يخب ظني أن الجدول لا يحتوي على مفتاح أساسي ( primary key )
إذا كان لا يوجد مفتاح أساسي في الجدول ( لن تستطيع إنشاء أوامر الحذف + التحديث ) بشكل ديناميكي
أو قد يكون يحتوي على مفتاح ولكنه استعلم بأعمدة محددة لم يكن بين بينها عمود المفتاح.
مثل
كود :
SELECT FirstName, LastName From Employees
المشاركات : 21
المواضيع 9
الإنتساب : Aug 2018
السمعة :
0
الشكر: 6
تم شكره 6 مرات في 6 مشاركات
16-09-18, 09:33 PM
(آخر تعديل لهذه المشاركة : 16-09-18, 09:55 PM {2} بواسطة SonBasel.)
(16-09-18, 12:07 AM)911 كتب : (15-09-18, 11:50 PM)عبدالله الدوسري كتب : إذا لم يخب ظني أن الجدول لا يحتوي على مفتاح أساسي ( primary key )
إذا كان لا يوجد مفتاح أساسي في الجدول ( لن تستطيع إنشاء أوامر الحذف + التحديث ) بشكل ديناميكي
أو قد يكون يحتوي على مفتاح ولكنه استعلم بأعمدة محددة لم يكن بين بينها عمود المفتاح.
مثل
كود :
SELECT FirstName, LastName From Employees
انا معرف primary key مع ظهور الصفحه و ما اتوقع ذا الشي ياثر و محدده في الاستعلام
(15-09-18, 11:50 PM)عبدالله الدوسري كتب : إذا لم يخب ظني أن الجدول لا يحتوي على مفتاح أساسي ( primary key )
إذا كان لا يوجد مفتاح أساسي في الجدول ( لن تستطيع إنشاء أوامر الحذف + التحديث ) بشكل ديناميكي
يوجد primary key
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
وعليكم السلام ورحمة الله وبركاته
فضلاً وليس امراً
بدلاً من التعامل مع التخمين
قم بوضع الاكواد المستخدمة
وصورة لما يظهر لديك من مشكلة
حتى نتمكن من وضع الرد المناسب فيما لديك من مشكلة
تحياتى لك
وتمنياتى لك التوفيق
المشاركات : 21
المواضيع 9
الإنتساب : Aug 2018
السمعة :
0
الشكر: 6
تم شكره 6 مرات في 6 مشاركات
(17-09-18, 09:31 AM)elgokr كتب : وعليكم السلام ورحمة الله وبركاته
فضلاً وليس امراً
بدلاً من التعامل مع التخمين
قم بوضع الاكواد المستخدمة
وصورة لما يظهر لديك من مشكلة
حتى نتمكن من وضع الرد المناسب فيما لديك من مشكلة
تحياتى لك
وتمنياتى لك التوفيق
كود :
Try
Dim row As DataRow = DT.Rows.Find(ID.Value)
If row Is Nothing Then
MsgBox("هذا العمل غير موجود", MsgBoxStyle.Exclamation, "الحذف")
Else
row.Delete()
cmdb = New SqlCommandBuilder(Adapter)
Adapter.Update(DT)
MsgBox("تمت عملية الحذف بنجاح", MsgBoxStyle.Information, "الحذف")
End If
Catch ex As Exception
(MsgBox(ex.Message
End Try
اسف توقعت اني مرسلها من امس بس طلع النت علق و ما ارسلها
المشاركات : 342
المواضيع 20
الإنتساب : May 2018
السمعة :
75
الشكر: 32
تم شكره 857 مرات في 338 مشاركات
يا ريت توضيح اكثر ويفضل وضع جميع الاكواد لان المشكلة التي ذكرتها اغلب اسبابها
هو المفتاح الرئيسي بالجدول الذي من خلاله تتم عمليات النحديث والحذف
المشاركات : 21
المواضيع 9
الإنتساب : Aug 2018
السمعة :
0
الشكر: 6
تم شكره 6 مرات في 6 مشاركات
(17-09-18, 09:38 PM)aljzazy كتب :
كود :
Imports System.Data.SqlClient
Public Class WatchList
Dim sqlcon As New SqlConnection("server=desktop-8ao3o4k\mssqlserver2017; database=DB_WatchList; Integrated security=true")
'تنفيذ
Dim Adapter As SqlDataAdapter
'تخزين
Dim DT As New DataTable
Dim cmdb As SqlCommandBuilder
Private Sub WatchList_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
DGV.BackgroundColor = Me.BackColor
Dim query As String = "select ID, Name ,Eps ,TimeTike ,DateStr, DateEnd from TBL_WatchList"
Adapter = New SqlDataAdapter("select * from TBL_WatchList", sqlcon)
Adapter.Fill(DT)
Me.DGV.DataSource = DT
DGV.Columns(0).HeaderText = "رقم العمل"
DGV.Columns(1).HeaderText = "اسم العمل"
DGV.Columns(2).HeaderText = "عدد الحلقات"
DGV.Columns(3).HeaderText = "الوقت المستغرق"
DGV.Columns(4).HeaderText = "وقت البدايه"
DGV.Columns(5).HeaderText = "وقت الانتهاء"
DGV.Columns(0).Width = 80
DGV.Columns(1).Width = 330
DGV.Columns(2).Width = 80
DGV.Columns(3).Width = 100
DGV.Columns(4).Width = 100
DGV.Columns(5).Width = 100
'ID.Value = 0
'txtName.Clear()
'NumEps.Value = 1
'NumTime.Value = 20
'DateStr.Value = Now.Date
'DateEnd.Value = Now.Date
' نخليه الممنوع التكرر
DT.Constraints.Add("primary", DT.Columns("ID"), True)
End Sub
Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
' add()
Try
Dim row As DataRow = DT.NewRow
row(0) = ID.Value
row(1) = txtName.Text
row(2) = NumEps.Value
row(3) = NumTime.Value
row(4) = DateStr.Value
row(5) = DateEnd.Value
DT.Rows.Add(row)
cmdb = New SqlCommandBuilder(Adapter)
Adapter.Update(DT)
MsgBox("تمت الاضافة بنجاح", MsgBoxStyle.Information, "الاضافة")
txtName.Clear()
ID.Value = ID.Value + 1
NumEps.Value = 1
NumTime.Value = 20
DateStr.Value = Now.Date
DateEnd.Value = Now.Date
txtName.Focus()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Dim oldID As Integer
Private Sub btndel_Click(sender As System.Object, e As System.EventArgs) Handles btndel.Click
Try
Dim row As DataRow = DT.Rows.Find(ID.Value)
If row Is Nothing Then
MsgBox("هذا العمل غير موجود", MsgBoxStyle.Exclamation, "الحذف")
Else
row.Delete()
cmdb = New SqlCommandBuilder(Adapter)
Adapter.Update(DT)
MsgBox("تمت عملية الحذف بنجاح", MsgBoxStyle.Information, "الحذف")
txtName.Clear()
NumEps.Value = 1
NumTime.Value = 20
DateStr.Value = Now.Date
DateEnd.Value = Now.Date
txtName.Focus()
End If
Catch ex As Exception
MsgBox(ex.Message,MsgBoxStyle.Exclamation,"خطأ")
End Try
End Sub
' Sub add()
' End Sub
Private Sub ID_ValueChanged(sender As System.Object, e As System.EventArgs) Handles ID.ValueChanged
Try
If ID.Value = Nothing Then
ID.Value = 1
Else
Dim row As DataRow = DT.Rows.Find(ID.Value)
If row IsNot Nothing Then
oldID = row(0)
txtName.Text = row(1)
NumEps.Value = row(2)
NumTime.Value = row(3)
DateStr.Value = row(4)
DateEnd.Value = row(5)
ElseIf (ID.Value <> oldID) Then
txtName.Clear()
NumEps.Value = 1
NumTime.Value = 20
DateStr.Value = Now.Date
DateEnd.Value = Now.Date
End If
End If
Catch ex As Exception
'MsgBox(ex.Message)
End Try
End Sub
Private Sub btnEdit_Click(sender As System.Object, e As System.EventArgs) Handles btnEdit.Click
Try
Dim row As DataRow = DT.Rows.Find(oldID)
row(0) = ID.Value
row(1) = txtName.Text
row(2) = NumEps.Value
row(3) = NumTime.Value
row(4) = DateStr.Value
row(5) = DateEnd.Value
cmdb = New SqlCommandBuilder(Adapter)
Adapter.Update(DT)
MsgBox("تمت عملية التحديث", MsgBoxStyle.Information, "التحديث")
ID.Value = +1
txtName.Clear()
NumEps.Value = 1
NumTime.Value = 20
DateStr.Value = Now.Date
DateEnd.Value = Now.Date
txtName.Focus()
Catch ex As Exception
End Try
End Sub
End Class
يا ريت توضيح اكثر ويفضل وضع جميع الاكواد لان المشكلة التي ذكرتها اغلب اسبابها
هو المفتاح الرئيسي بالجدول الذي من خلاله تتم عمليات النحديث والحذف
مو فاهم قصدك بالتوضيح لكن ذا الاكواد كلها
المشاركات : 813
المواضيع 24
الإنتساب : Oct 2012
السمعة :
228
الشكر: 1145
تم شكره 2171 مرات في 815 مشاركات
الكود الذي وضعتة لا يشرح شيء في شكل الجدول الموجود في قاعدة البيانات
برجاء ضع صورة لشكل الجدول الموجود في قاعدة البيانات ( شكل التصميم ) لو سمحت.
طولتها على نفسك وهي قصيرة
صورة وحدة بس
|