تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 5 از 5

نام تاپيک: جلوگیری از ثبت اطلاعات تکراری در دیتابیس

  1. #1
    در آغاز فعالیت ghayour's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    16

    14 جلوگیری از ثبت اطلاعات تکراری در دیتابیس

    سلام
    من يک پروژه دفترچه تلفن با vb.net ساختم. مي خواهم اطلاعات تکراري در ديتابيس ذخيره نشه و يک پيام بده که قبلا اين ثبت شده. منظورم براساس سه تا تکس باکسه، ببينه که تکراري هست يانه! مثلا اگر کسي را در تکس باکس نوشتيم تا ذخيره کند و نام و نام خانوادگي و سمت همون فرد قبلا ثبت شده باشد، يعني در يک سطر از ديتابيس، نام و نام خانوادگي و سمت فرد مورد نظر ما باهم(در يک سطر) از قبل وجود داشت ديگر ثبت نشود. اميدوارم منظورم را فهميده باشيد.
    من کدي در اين رابطه نوشتم اما در ديتابيس در يک سطر جستجو نميکند بلکه در هر جايي که وجود داشته باشد مي گردد.
    لطفا کمکم کنيد!!
    اين هم کدي که در دکمه ذخيره نوشتم:

    Dim con As New System.Data.OleDb.OleDbConnection
    Dim com As New System.Data.OleDb.OleDbCommand
    con.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Phone.accdb")
    Dim table As String
    Dim table1 As String
    Dim table2 As String
    Dim d As String
    Dim d1 As String
    Dim d2 As String
    Dim ds As New DataSet
    table = "select * from tblPhone where نام=" + "'" + txtFirstName.Text + "'"
    table1 = "select * from tblPhone where خانوادگي=" + "'" + txtLastName.Text + "'"
    table2 = "select * from tblPhone where سمت=" + "'" + cboTitle.Text + "'"
    Dim da As OleDbDataAdapter = New OleDbDataAdapter(table, con)
    Dim da1 As OleDbDataAdapter = New OleDbDataAdapter(table1, con)
    Dim da2 As OleDbDataAdapter = New OleDbDataAdapter(table2, con)
    d = da.Fill(ds, "tblPhone")
    d1 = da1.Fill(ds, "tblPhone")
    d2 = da2.Fill(ds, "tblPhone")
    If (d = True And d1 = True And d2 = True) Then
    MessageBox.Show("فرد مورد نظر شما قبلا ثبت شده است", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Else
    com.Connection = con
    com.CommandText = "INSERT INTO tblPhone (نام, خانوادگي, سمت, موبايل1, موبايل2, تلفن1, تلفن2, آدرس) VALUES(@نام, @خانوادگي, @سمت, @موبايل1, @موبايل2, @تلفن1, @تلفن2, @آدرس)"
    com.Parameters.Clear()
    com.Parameters.AddWithValue("@نام", txtFirstName.Text)
    com.Parameters.AddWithValue("@خانوادگي", txtLastName.Text)
    com.Parameters.AddWithValue("@سمت", cboTitle.Text)
    com.Parameters.AddWithValue("@موبايل1", txtMobile1.Text)
    com.Parameters.AddWithValue("@موبايل2", txtMobile2.Text)
    com.Parameters.AddWithValue("@تلفن1", txtPhone1.Text)
    com.Parameters.AddWithValue("@تلفن2", txtPhone2.Text)
    com.Parameters.AddWithValue("@آدرس", txtAdress.Text)
    con.Open()
    com.ExecuteNonQuery()
    con.Close()
    com.Dispose()
    con.Dispose()
    End If

  2. #2
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    فیلد یا فیلد های کلیدی نمیتونن تکرار بشن!!

    مسئله اینه که اگر مثلا اسم ها تکرار نشن، ما کلی اسم و فامیل تکراری داریم!!! تازه ممکنه یه نفر چند شماره داشته باشه یا ....!!!

  3. این کاربر از senaps بخاطر این مطلب مفید تشکر کرده است


  4. #3
    در آغاز فعالیت ghayour's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    16

    پيش فرض

    فیلد یا فیلد های کلیدی نمیتونن تکرار بشن!!
    من اینکاری رو که گفتید رو انجام دادم اما یک مشکلی هست و اون هم اینه که اگه اطلاعات ما تکراری بشه، دستور com.ExecuteNonQuery() کار نمی کنه و از برنامه خارج میشه و من نتونستم دستوری بنویسم که اگر تکراری بود پیغام بده که تکراری هست و برنامه بسته نشه!!
    لطفا کمکم کنید.



    مسئله اینه که اگر مثلا اسم ها تکرار نشن، ما کلی اسم و فامیل تکراری داریم!!! تازه ممکنه یه نفر چند شماره داشته باشه یا ....!!!
    در این مورد هم که گفتید، چون براساس سه تا تکست باکس دنبال میگرده(نام، نام خانوادگی، سمت) دیگه خیلی کم امکان داره پیدا بشه و همچنین برای هر نفر هم دوتا شماره موبایل و هم دوتا شماره تلفن در نظر گرفتم و این تعداد شماره کافیه. با این حال اگر فرد تکراری یا شماره ی بیشتری خواستیم یادداشت کنیم فقط کافیه که یک کاراکتر مثل (1) به آن اضافه کنیم و دیگر مشکلی پیش نمیاد.


    ببخشید که یکم دیر جواب میدم چون کمی با اینترنتم مشکل دارم.

  5. #4
    در آغاز فعالیت
    تاريخ عضويت
    Aug 2012
    پست ها
    6

    پيش فرض ارتباط با پایگاه داده روی هاست

    سلام،من یه برنامه سی شارپ با استفاده از پایگاه داده نوشتم و روی هاست آپلود کردم،چطوری میتونم اطلاعات پایگاه داده رو از روی هاست توی یه برنامه سی شارپ دیگه تو کامپیوتر خودم بخونم؟ممنون میشم سریعتر جواب بدید.خیلی خیلی وقتم کمه.به دادم برسید

  6. #5
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    لطفا کمکم کنید.
    شما ارور مربوطه رو هندل کردین؟!
    وقتی کدی مینویسید که حتی ۱ صدم درصد احتمال میدین که ممکنه یه زمانی تحت شرایط خاصی این کد ارور بده، باید بریزیدش توی Try,catch و هندل کنین ارور مربوطه رو... چون خود سیستم، وقتی ارور میده، کار رومتوقف میکنه!!!
    میتونین یه مسیج باکس بذارین تو بخش Catch که بگه اقاجون دیتات تکراری میباشه!!

    در این مورد هم که گفتید، چون براساس سه تا تکست باکس دنبال میگرده(نام، نام خانوادگی، سمت) دیگه خیلی کم امکان داره پیدا بشه و همچنین برای هر نفر هم دوتا شماره موبایل و هم دوتا شماره تلفن در نظر گرفتم و این تعداد شماره کافیه. با این حال اگر فرد تکراری یا شماره ی بیشتری خواستیم یادداشت کنیم فقط کافیه که یک کاراکتر مثل (1) به آن اضافه کنیم و دیگر مشکلی پیش نمیاد.
    روشتون تا حدودی درسته!!!!
    مخصوصا این اضافه کردن شماره تلفن.... ببنید، طراحی جدول بانکتون ضعیف میباشه!!(ببخشید که این رو روک گفتم!).....
    معمولا سعی بشه ادرس ها و تماس ها هر کدوم یه جدول داشته باشه عالی میباشه!! مصلا، جدول مربوط به شماره تلفن های همراه!! که توش Id و شماره تلفن ذخیره میشه.... حالا Id میتونه بینهایت شماره تلفن یا ایمیل، ادرس و ... داشته باشه!! و شما میتونی خیلی راحت اینا رو نشون بدی! بدون اضافه کردن عدد به نام یاتقلب های دیگه!!( فوقش مجبور باشید توی لیست باکس نمایشش بدین شماره های یه نفر رو... اینجوری سیستم بهینه تره و جست و جوی راحت تری بهتون میده!)...

    سلام،من یه برنامه سی شارپ با استفاده از پایگاه داده نوشتم و روی هاست آپلود کردم،چطوری میتونم اطلاعات پایگاه داده رو از روی هاست توی یه برنامه سی شارپ دیگه تو کامپیوتر خودم بخونم؟ممنون میشم سریعتر جواب بدید.خیلی خیلی وقتم کمه.به دادم برسید
    دوست عزیز، ایده‌ی جالبی دارین ولی فقط شنیدین که اینجوری کارتون راه می‌افته!! در واقع، شما باید یه وب سرویس برای دیتابیس مربوطه بنویسید!!!! میتونید وب سرویس ها رو گوگل کنین تا اطلاعات کامل تری بدست بیارید... راه حل بهینه و عالی میباشه...(و البته تنها راه حل برای کاری که شما احتمالا میخوای بکنی!)

  7. این کاربر از senaps بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •