PDA

View Full Version : سوال: کلید اصلی جدول



reza69
شنبه 08 بهمن 1390, 16:30 عصر
سلام من تو vb.net وقتی داخل جدولم اطلاعات رو وارد می کنم موقع ثبت اطلاعات پیام میده که کلید اصلی تکراری هست ولی داخل جدول در ستون کلید اصلی هیچ کلیدی با مشخصه مورد نظر ثبت نشده در صورتی که قبلا آن مشخصه ثبت شده و پاک شده و اکنون در جدول نیست.
مثلا قبلا در ستون کلید اصلی عدد 5 رو وارد کردم وبعد همان رکورد رو پاک کردم و دیگه تو جدول نیست
ولی اگه بخوام دوباره عدد 5 رو در ستون کلید اصلی وارد کنم ارور میده
Object reference not set to an instance of an object.
لطفا کمک کنید باید پروژمو تحویل استادم بدم:گریه::گریه::گریه::گریه::گ یه::گریه::گریه:

crazy_1892
شنبه 08 بهمن 1390, 16:43 عصر
دوست عزیز توضیحی که دادی اصلا واضح نیست

کلید اصلی:به یک ستون از جدول گفته میشه که مقدار اون ستون در هر رکورد به صورت یکتا میباشد(تکراری )نیست
حالا امکان داره شما یک کلید تعریف کرده باشین و پاک کرده باشین ولی اگر در یک رابطه اون جدول را شرکت داده باشین کلید تعریف میشه
چک کن

reza69
شنبه 08 بهمن 1390, 18:40 عصر
آره من اون جدول رو تو یه رابطه شرکت دادم این شکلی
file:///C:/Documents%20and%20Settings/Administrator/Desktop/rabete.JPG81611
ولی تو جدول دوم هم اون عدد نبود. یعنی شما میگی که اگه جدولمو در هر رابطه ای شرکت بدم این اتفاق می افته؟ یعنی در صورت حذف شدن عدد در جدول اول و دوم دیگه نمیشه عدد رو باز وارد کرد؟

hamid_shrk
شنبه 08 بهمن 1390, 18:48 عصر
ولی اگه بخوام دوباره عدد 5 رو در ستون کلید اصلی وارد کنم ارور میده
Object reference not set to an instance of an object.

این خطا که خطای duplicate نیست!!
مربوط به یک چیز دیگس.
لطفا کد insert تون رو بزارید

reza69
شنبه 08 بهمن 1390, 18:54 عصر
این کد اینسرتمه
Private Sub btnsabt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsabt.Click

Dim constring As String = "Data Source=localhost;Initial Catalog=dantist_DB;Integrated Security=True"
Dim objcon As New SqlClient.SqlConnection(constring)
objcon.Open()

Dim dagroup As New SqlClient.SqlDataAdapter("select * from bimar", objcon)
Dim dsgroup As New DataSet
dagroup.Fill(dsgroup, "dantist_db")
Dim tblgroup As DataTable
tblgroup = dsgroup.Tables("dantist_db")
Dim drcurrent As DataRow

drcurrent = tblgroup.NewRow()
drcurrent("name") = txtname.Text
drcurrent("fname") = txtfname.Text
drcurrent("shenasname") = txtshenas.Text
drcurrent("birthday") = CDate(txtdate.Text)
drcurrent("sex") = txtsex.Text
drcurrent("telloffice") = txtteloffice.Text
drcurrent("mobilenum") = txttel.Text
drcurrent("numcode") = txtnumcode.Text
از اینجا چک می کنه numcode تکراری نباشه
Dim cn As SqlConnection
cn = New SqlConnection("Data Source=localhost;Initial Catalog=dantist_DB;Integrated Security=True")
Dim da As SqlDataAdapter
da = New SqlDataAdapter("select numcode from bimar", cn)
Dim ds As DataSet
ds = New DataSet
da.FillSchema(ds, SchemaType.Mapped, "bimar")
da.Fill(ds, "bimar")
Dim dr As DataRow
dr = ds.Tables("bimar").Rows.Find(txtnumcode.Text)
If dr("numcode") = drcurrent("numcode") Then
MsgBox("کد پرونده تکراری است لطفا دوباره وارد کنید")
GoTo next1
End If
اینجا چک کردن numcode تمام میشه
drcurrent("adres") = txtadres.Text
drcurrent("adresoffice") = txtadresoffice.Text
drcurrent("coment") = txtcoment.Text
drcurrent("adrespic") = lblfilepath1.Text



tblgroup.Rows.Add(drcurrent)
Dim objcommandbuilder As New SqlClient.SqlCommandBuilder(dagroup)
dagroup.Update(dsgroup, "dantist_db")
MsgBox("ثبت با موفقیت انجام شد")

next1:
End Sub

reza69
شنبه 08 بهمن 1390, 19:33 عصر
81615این هم ارورشه

reza69
شنبه 08 بهمن 1390, 19:47 عصر
رفقا مشگلم حل شد
اون قطعه کدی که برای چک کردن numcode نوشته بودم رو حذف کردم
ولی یه مشگل دیگه دارم
شما میتونید یه کد بهم بدید که قبل از ثبت اطلاعات چک کنه ببینه عدد numcode داخل ستون هست یانه؟ به عبارتی در صورت تکرار عدد numcode پیامی نمایش بده؟

meisam3322
شنبه 08 بهمن 1390, 20:10 عصر
دوست عزیز یه جستجوی ساده توی همین وب سایت، چیزی ازتون کم نمیکنه !!!!!!

reza69
شنبه 08 بهمن 1390, 20:55 عصر
نیاز نیست کسی جواب بده خودم پیداکردم
Dim cn As SqlConnection
cn = New SqlConnection("Data Source=localhost;Initial Catalog=dantist_DB;Integrated Security=True")
Dim da As SqlDataAdapter
da = New SqlDataAdapter("select * from bimar", cn)
Dim ds As DataSet
ds = New DataSet
da.FillSchema(ds, SchemaType.Mapped, "bimar")
da.Fill(ds, "bimar")
Dim dr As DataRow
dr = ds.Tables("bimar").Rows.Find(txtnumcode.Text)
If Not (dr Is Nothing) Then
MsgBox("کد پرونده تکراری است لطفا دوباره وارد کنید")
GoTo next1
End If

reza69
شنبه 08 بهمن 1390, 20:57 عصر
آره میدونم از شما هم کم نمیشه بجای این حرفا یه جواب بدین meisam3322 (http://barnamenevis.org/member.php?144242-meisam3322)