نمایش نتایج 1 تا 22 از 22

نام تاپیک: جلو گیری از ذخیره داده تکراری در پایگاه داده

  1. #1
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    Thumbs up جلو گیری از ذخیره داده تکراری در پایگاه داده

    سلام
    ببخشید این چند روز من زیاد تاپیک میزنم .
    سوالم اینه که چطور می تونم قبل از ذخیره ی یک نام از وجود اون آگاه بشم و نگذارم ذخیره بشه .
    من یه کد دارم اما نمی دونم چرا کار نمی کنه .
    اینم کدم :
                If ds.Tables(0).Rows.Count = 0 Then
    ExpandablePanel1.Text = "چنین کاربری وجود ندارد"
    ExpandablePanel1.Expanded = True
    Timer1.Enabled = True
    Else

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

  2. #2

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    كدي كه نوشتي فقط داخل ديتا ست رو چك ميكنه نه داخل بانكت(داخل پايگاه داده).يه STP بنويس توي SQL كه Count مقدار ورودي مورد نظرت رو بهت بده واسه خروجي. اينجا بصورت Scaler فراخونيش كن ببين چند تا ازش داري اگر خروجي مخالف صفر بود يعني تكراري هستش.

  3. #3

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    کار سختی نیست.
    فیلدی که نباید تکراری باشه رو (در اینجا نام) رو Primary Key می گیری.
    فکر کن اسن "محمد" توی بانک وجود داره.
    حالا اگر دوباره بخوای اسم "محمد" رو توی بانک ذخیره کنی یک Exception می گیری که با Catch کردن اون می تونی به مقصودت برسی.

  4. #4
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    خوب آقای حبیبی من نمی دونم باید چیکار کنم لطفا کمکم کنید
    و اما آقای شاه محمدی من یه فیلد دیگه رو هم کلید اصلی قرار دادم و شاید بخوام ویرایشش کنم .
    کمک کنید لطفا

  5. #5
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده


    کمک کمک کمک لطفا کمک کنید واقعا گیرم .


    از مدیر بخش هم تقاضا دارم به دلیل فنی نبودن پست و نداشتن مطلب علمی این پست رو حداقل 24 ساعت حذف نکنند .

  6. #6
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    با سلام

    میتونی از این نمونه کد استفاده کنی .

    Public Class Form1
    Private cnnstring As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED B.4.0;Data Source=|DataDirectory|\db.mdb")
    Private Function ExistRecord(ByVal fieldname As String) As Boolean
    Dim ap As New OleDb.OleDbDataAdapter("Select " & fieldname & " from table1 where " & fieldname & " ='" & txt1.Text & "'", cnnstring)
    Dim dt As New DataTable
    ap.Fill(dt)
    If dt.Rows.Count = 0 Then
    Return True
    Else
    Return False
    End If
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If ExistRecord("fname") Then
    MsgBox("کاربری با این نام یافت نشد", MsgBoxStyle.Information)
    Else
    MsgBox("کاربری با این نام قبلا ثبت شده است", MsgBoxStyle.Exclamation)
    End If
    End Sub
    End Class


    موفق باشید ./

  7. #7
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    سلام
    ممنون اما fieldname چیه ؟
    بعدشم چطور باید از این کد استفاده کنم ، منظورم اینه که کد ذخیره رو کجای اون شرط باید بزارم ؟

  8. #8
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    کمک کنید لطفا فردا صبح باید پروژه رو تحویل بدم .


    ساعت 12:00 شد واقعا کسی نیست کمک کنه ؟
    آخرین ویرایش به وسیله teymoorei : دوشنبه 10 مرداد 1390 در 23:51 عصر

  9. #9
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    ممنون اما fieldname چیه ؟
    ای بابا ! خوب معلومه دیگه نام فیلدی هست که دارم عمل جستجو رو براساس اون انجام میدم تا ببینم همچین رکوردی در جدول وجود داره یا نه !

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

    موفق باشید ./
    فایل های ضمیمه فایل های ضمیمه

  10. #10
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    سلام
    باتشکر از alimanam اما بازم کار نکرد نمی دونم چرا ؟
    خواهشا کمک کنید بعد از ظهر باید پروژه رو تحویل بدم .
    کارم خیلی خیلی گیره .

  11. #11
    کاربر دائمی آواتار Behzad_MCP
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    44
    پست
    124

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده



    PublicSub AddNewBank(ByVal Bname AsString)

    BankName = Bname


    Dim da AsNew SqlDataAdapter("SELECT * FROM Cheques.Banks", frmMain.cnMain)


    Dim ds AsNew DataSet

    da.Fill(ds,
    "Banks")

    BankExistance =
    False


    For i AsInteger = 0 To ds.Tables(0).Rows.Count - 1


    If BankName = ds.Tables(0).Rows.Item(i).Item(1).ToString Then

    BankExistance =
    True

    MyBoxError(
    " ╚╟╘╧" & vbCrLf & " ╟╙╩▌╟╧ف ءغ", " ")


    ExitSub


    EndIf


    Next


    IfNot BankExistance Then


    Dim row As DataRow = ds.Tables(0).NewRow

    row(
    "BankName") = BankName

    row(
    "ModifiedDate") = Date.Now

    ds.Tables(
    "Banks").Rows.Add(row)


    Dim scb AsNew SqlCommandBuilder(da)

    da.Update(ds,
    "Banks")

    MyBoxInformation(
    " ", " ")


    EndIf


    EndSub

    توجه داشته باش که bankName غث پراپرتی که موقع مقدار دهی گرفته میشه

  12. #12
    مدیر بخش آواتار mmd2009
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    2,393

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    با سلام

    دوست عزیز کدهایی که اقای alimanam گذاشتن درسته.

    شما کافیه قبل از هر بار که میخوای یک رکورد رو ثبت بکنی چک کنی ببینی ایا قبلا تو بانک به همچون اسمی رکوردی قبلا گذاشته شده یا نه و مطمئنا مقدار true یا False برمی گرده دقیقا مطل متدی که دوستمون نوشتن حالا طریقه استفادش رو هم که توضیح دادن. من مطمئما اگر جوابی نداده احتمال زیاد اشتباه از کدهای شماست. شما کدهای خودتون رو بطور کامل و دقیق اینجا بذارید که دوستان بتونن به شکل واضح تری جوابتون رو بدن طبق چیزی که خودتون رفتید جلو.

    موفق باشید

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  13. #13
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    سلام
    من هم این روش رو استفاده کردم :
            Connection.Open()
    ad = New SqlDataAdapter("select * from Table1 where Catgory='" & TextBox1.Text & "'", Connection)
    Dim ds2 As New DataSet
    ad.Fill(ds2, "Table1")
    If ds2.Tables(0).Rows.Count = 0 Then

    Dim cmd As New SqlCommand("Insert into Table1 (Catgory) Values(@p1)", Connection)
    cmd = New SqlCommand("IF EXISTS(SELECT * FROM yourTableName WHERE id=@id) SELECT 1 ELSE SELECT 0", Connection)
    If Connection.State = ConnectionState.Closed Then Connection.Open()
    With cmd
    .Parameters.Clear()
    .Parameters.AddWithValue("@p1", TextBox1.Text.Trim)
    .ExecuteNonQuery()
    End With

    ElseIf ds2.Tables(0).Rows.Count <> 0 Then
    ExpandablePanel1.Text = "نام کاربر تکراری است"
    ExpandablePanel1.Expanded = True
    Timer1.Enabled = True
    Exit Sub

    End If

    هم این روش :

    If ExistRecord("Catgory") Then
    If Connection.State <> ConnectionState.Open Then
    Connection.Open()
    Dim cmd As New SqlCommand("Insert into Table1 (Catgory) Values(@p1)", Connection)
    If Connection.State = ConnectionState.Closed Then Connection.Open()
    With cmd
    .Parameters.Clear()
    .Parameters.AddWithValue("@p1", TextBox1.Text.Trim)
    .ExecuteNonQuery()
    End With
    'ExpandablePanel1.Expanded = True
    'ExpandablePanel1.Text = "اطلاعات با موفقيت ذخيره شد"
    'Timer1.Enabled = True
    TextBox1.Clear()
    'Connection.Close()
    MsgBox("شخص مورد نظر با موفقيت ثبت شد", MsgBoxStyle.Information)
    Else
    MsgBox("فردي با نام وارد شده قبلاً درپايگاه داده ثبت شده است", MsgBoxStyle.Exclamation)
    End If


    البته در مورد کد دوم هر بار که فرم رو باز می کنم بار اول کار نمی کنه دوباره که وارد می کنم جلوگیری میکنه ولی باز فرم رو که می بندم باز روز از نو و روزی از نو

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

  14. #14
    کاربر دائمی آواتار Behzad_MCP
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    44
    پست
    124

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    ببین تیموری جان کد اولت درسته باید کار کنه فقط دیگه ElseIf نذار Else بذار با BreakPoint چک کن ببین چه اتفاقی میفته

  15. #15
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    نمیشه نمیشه نمیشه بابا نمیشه به خدا نمیشه اح .

  16. #16
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

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

    موفق باشید.

  17. #17
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    ممنون از توجه تون با این تاپیک و برنامه ی من .

  18. #18
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    آقا واقعا دست همگی درد نکنه خیلی زحمت کشیدید ، من دیگه بی خیال این موضوع شدم این سومین سواله که این اتفاق میوفته .
    خدانگهدار

  19. #19
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    با سلام

    یعنی چی نمیشه مگه میخوای آپولون هوا کنی عزیز !!! این هم همون سورس با پایگاه داده SQL شما دقیقا همین کد رو کپی پست کن چون دیتابیسش عین جدول شماست !

    Imports System.Data.SqlClient
    Public Class Form1
    Private connection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\db.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
    Private Function ExistRecord(ByVal fieldname As String, ByVal tablename As String) As Boolean
    Dim ap As New SqlDataAdapter("Select " & fieldname & " from " & tablename & " where " & fieldname & " = N'" & TextBox1.Text & "'", connection)
    Dim dt As New DataTable
    ap.Fill(dt)
    If dt.Rows.Count = 0 Then
    Return True
    Else
    Return False
    End If
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If ExistRecord("Catgory", "table1") Then
    Dim cmd As New SqlCommand("Insert into table1(Catgory) Values (@Catgory)")
    cmd.Connection = connection
    If connection.State = ConnectionState.Closed Then connection.Open()
    With cmd
    .Parameters.Clear()
    .Parameters.AddWithValue("@Catgory", TextBox1.Text)
    .ExecuteNonQuery()
    End With
    MsgBox("شخص مورد نظر با موفقیت ثبت شد", MsgBoxStyle.Information)
    Else
    MsgBox("فردی با نام وارد شده قبلاً درپایگاه داده ثبت شده است", MsgBoxStyle.Exclamation)
    End If
    End Sub
    End Class

    موفق باشید ./
    فایل های ضمیمه فایل های ضمیمه

  20. #20
    کاربر دائمی آواتار ahmadreza517
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    اینترنت
    پست
    393

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    سلام دوست عزیز
    به آدرس زیر سر بزن حتما جوابتو می گیری
    http://howprg.blogfa.com/post-11.aspx

    rfg.jpg

    به فرم FrmAdd برو و تابع Check رو نگاه کن

    نمونه کد :




    PrivateSub Check()
    Try
    If txtNumFact.Text = ""Or txtNameCustomer.Text = ""Then
    MsgBox("شماره فاکتور و نام مشتری را وارد نمائید", MsgBoxStyle.ApplicationModal, "")
    ExitSub
    EndIf
    If IsNumeric(txtNumFact.Text) = FalseThenExitSub
    Dim i AsInteger
    Dim con AsNew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\db.mdb")
    Dim command AsNew OleDbCommand("Select * From Tbl_db Where NumFact=@NumFact", con)
    command.Parameters.AddWithValue("@NumFact", txtNumFact.Text)
    Dim dr As OleDbDataReader
    con.Open()
    dr = command.ExecuteReader
    While dr.Read
    i = dr("NumFact")
    EndWhile
    If i > 0 Then
    MessageBox.Show("عدد وارد شده تکراری است" + vbCrLf + "عدد دیگری را امتحان کنید", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
    con.Close()
    dr.Close()
    ExitSub
    EndIf
    con.Close()
    dr.Close()



    Call ADD()
    Catch ex As Exception
    MsgBox(ex.Message)
    ExitSub
    EndTry
    EndSub
    PrivateSub ADD()
    Application.DoEvents()
    Dim strDate AsString = mskDate.Text
    If ChDate.Checked = TrueThen
    strDate = MdlDate.DateShamsi
    EndIf
    Try
    Dim c AsNew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\db.mdb")
    Dim D_add AsNew OleDbDataAdapter
    Dim g AsString = cmbGroup.Text
    Dim M AsString = cmbMonth.Text

    Dim co AsNew OleDbCommand("INSERT INTO Tbl_db(NumFact,NameCustomer,City,Masoolpey,MasoolN asb,[Month],[Group],Adr,Mobile,Tell,[Date],other)Values(@NumFact,@NameCustomer,@City,@Masool pey,@MasoolNasb,@Month,@Group,@Adr,@Mobile,@Tell,@ Date,@other)", c)

    co.Parameters.AddWithValue("NumFact", txtNumFact.Text)
    co.Parameters.AddWithValue("NameCustomer", txtNameCustomer.Text)
    co.Parameters.AddWithValue("City", txtCity.Text)
    co.Parameters.AddWithValue("Masoolpey", txtMasoolPey.Text)
    co.Parameters.AddWithValue("MasoolNasb", txtMasoolNasb.Text)
    co.Parameters.AddWithValue("Month", cmbMonth.Text)
    co.Parameters.AddWithValue("Group", cmbGroup.Text)
    co.Parameters.AddWithValue("Adr", txtadr.Text)
    co.Parameters.AddWithValue("Mobile", txtmobile.Text)
    co.Parameters.AddWithValue("Tell", txtTell.Text)
    co.Parameters.AddWithValue("Date", strDate)
    co.Parameters.AddWithValue("other", txtOther.Text)
    c.Open()
    co.ExecuteNonQuery()
    c.Close()
    MessageBox.Show("اطلاعات با موفقیت در بانک اطلاعاتی ثبت شد", "", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Catch ex As Exception
    MsgBox(ex.Message)
    EndTry

    txtNumFact.Text = ""
    txtadr.Text = ""
    txtCity.Text = ""
    txtMasoolNasb.Text = ""
    txtMasoolPey.Text = ""
    txtmobile.Text = ""
    txtNameCustomer.Text = ""
    txtOther.Text = ""
    txtTell.Text = ""
    mskDate.Text = ""
    cmbGroup.SelectedIndex = 0
    cmbMonth.SelectedIndex = 0

    txtNumFact.Focus()

    EndSub




  21. #21
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    این همه دردسر واسه چیییییییییییییییی؟ شما میتونید در هنگام طراحی بانک اطلاعاتی اون فیلد رو یونیک کنید خیلی هم سادست من یه کد از خود اس کیو ال میگذارم

    create table n(name nvarchar(22)null,unique(name))

    دستور unique یک کلید فرعی میباشد که از ورود داده های تکراری جلوگیری میکند برای فیلدهایی مثل نام ما نباید انها رو از نوع کلید اصلی بگذاریم
    این در جواب دوست عزیزم که گفته بودن میتونید این فیلد رو کلید اصلی قرار دهید میشه اما تا کلید فرعی هست چرا بریم سراغ کلید اصلی؟؟؟؟؟؟؟؟؟؟؟
    امیدوارم ناراحت نشده باشید
    موفق باشید

  22. #22
    کاربر دائمی آواتار ahmadreza517
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    اینترنت
    پست
    393

    نقل قول: جلو گیری از ذخیره داده تکراری در پایگاه داده

    سلام دوست عزیز به آدرس زیر سری بزن (پروژه کامل هست) به قسمت (جدید) پروژه رفته (شماره فاکتور نمی تواند تکراری باشد)
    http://howprg.blogfa.com/post-11.aspx

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •