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

نام تاپیک: تشخیص تکراری بودن یک ردیف در بانک

  1. #1

    Tick تشخیص تکراری بودن یک ردیف در بانک

    سلام دوستان خوبم
    من کد زیر رو در برنامم قرار دادم برای اینکه تشخیص بده که اگر ردیفی از دیتا گریدم تکراری بود جایگزین همون ردیف قبلی در بانک بشه ولی پیغام خطایی داد که نمی دونم از چی هست


    a = DataGridView1.CurrentRow.Cells(4).Value / DataGridView2.Rows(j).Cells(4).Value
    Else : a = 0
    End If
    cmd.CommandText = " select * from shakhes where sal81=@a"
    Dim dr = cmd.ExecuteReader()
    If dr.hasrows = True Then
    cmd.CommandText = "UPDATE shakhes SET sal81 =" & a & " WHERE idsetande = " & DataGridView2.Rows(j).Cells(4).Value
    End If
    If DataGridView2.Rows(j).Cells(5).Value <> 0 Then
    b = DataGridView1.CurrentRow.Cells(5).Value / DataGridView2.Rows(j).Cells(5).Value
    Else : b = 0
    End If
    cmd.CommandText = " select * from shakhes where sal82=@b"
    Dim dr = cmd.ExecuteReader()
    If dr.hasrows = True Then
    cmd.CommandText = "UPDATE shakhes SET sal82 =" & a & " WHERE idsetande = " & DataGridView2.Rows(j).Cells(5).Value
    End If

    پیغام خطا به صورت زیر هست


    سوال دیگه ام این هست که اصلا این کدی که نوشتم آیا برای تشخیص یک ردیف در بانکم درست هست و اگر نیست به چه صورتی باید کد رو تغییر بدم؟؟؟

  2. #2

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    شما میخوای اگه ردیف یکی بود مقادیر با مقادیر بانک جمع شه؟بیشتر توضیح بده

  3. #3
    کاربر دائمی آواتار mehrnoosh_al62
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شمال ایران...
    پست
    374

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    دوست خوبم شما قبلا هم مشکلی شبیه به این داشتید مشکل شما اینه که قبل از اینکه پارامترهاتون رو تعریف کنید و بهشون مقدار بدید اون هارو insert میکنید کدتون رو به این شکل تغییر بدید :

     a = DataGridView1.CurrentRow.Cells(4).Value / DataGridView2.Rows(j).Cells(4).Value
    sqlcomm.Parameters.Add("@sal81", SqlDbType.Int)
    sqlcomm.Parameters("@sal81").Value = a
    Else : a = 0
    End If
    cmd.CommandText = " select * from shakhes where sal81=@sal81"
    Dim dr = cmd.ExecuteReader()
    If dr.hasrows = True Then
    cmd.CommandText = "UPDATE shakhes SET sal81 =@sal81 WHERE idsetande = " & DataGridView2.Rows(j).Cells(4).Value
    End If
    If DataGridView2.Rows(j).Cells(5).Value <> 0 Then
    b = DataGridView1.CurrentRow.Cells(5).Value / DataGridView2.Rows(j).Cells(5).Value
    sqlcomm.Parameters.Add("@sal82", SqlDbType.Int)
    sqlcomm.Parameters("@sal81").Value = b
    Else : b = 0
    End If
    cmd.CommandText = " select * from shakhes where sal82=@sal82"
    Dim dr = cmd.ExecuteReader()
    If dr.hasrows = True Then
    cmd.CommandText = "UPDATE shakhes SET sal82 =@sal82 WHERE idsetande = " & DataGridView2.Rows(j).Cells(5).Value
    End If


    البته من متوجه نشدم شما چرا از دستور Update استفاده کردید اگه میخواید سطر قبلی که تکراریه پاک شه و سطر جدید جایگزینش شه اول delete و بعد insert کنید

  4. #4

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    نقل قول نوشته شده توسط saman_itc مشاهده تاپیک
    شما میخوای اگه ردیف یکی بود مقادیر با مقادیر بانک جمع شه؟بیشتر توضیح بده

    نه دوست عزيز
    من مي خوام اگر اطلاعات رديف يكي بود جايگزين همون رديفي بشه كه اطلاعاتش با اطلاعات وارد شده جديد بشه.
    يعني اگر يك رديف در ديتا گريد از اعداد 2 و 5 و 8 دارم و وارد بانك مي كنم و در بانك هم رديفي مانند 2 و 5 و 7 دارم جايگزين اون رديف اول بشه و اطلاعات رو update كنه ولي به اين صورتيكه من نوشتم فيلد به فيلد اين كار رو انجام مي ده

  5. #5

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    دوست عزيز sqlcommand اصلا پارامتري به نام Parameters نداره

  6. #6
    کاربر دائمی آواتار mehrnoosh_al62
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شمال ایران...
    پست
    374

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    ببخشید به جای sqlcomm بگذارید cmd

  7. #7

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    آیا این طرز نوشتن در برنامه درست هست دوستان؟

    a = DataGridView1.CurrentRow.Cells(4).Value / DataGridView2.Rows(j).Cells(4).Value
    m = (DataGridView1.CurrentRow.Cells(1).Value * 100) + DataGridView2.Rows(j).Cells(1).Value
    cmd.CommandText = " INSERT INTO shakhes2 VALUES(" & m & "," & a & ") where idshakhes<>" & m
    cmd.CommandText = "UPDATE shakhes2 SET idshakhes =" & m & "WHERE idshakhes = " & m
    cmd.CommandText = "UPDATE shakhes2 SET sal81 =" & a & " where idshakhes=" & m
    cmd.ExecuteNonQuery()


    آیا می شه چند تا command text و یک cmdexecutenonQuery داشته باشیم؟
    چون من این کد رو که نوشتم هیچ پیغام خطایی نمی ده ولی در بانک هم insert نمی کنه

  8. #8
    کاربر دائمی آواتار mehrnoosh_al62
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شمال ایران...
    پست
    374

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    نه درست نیست وقتی شما کد فوق رو اجرا میکنید تنها commandtext آخری اجرا میشه همه دستورات رو تو یه commandtext بنویسید

  9. #9

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    ممنونم از لطفت دوست عزیز ولی آخه چه جوری همه رو تو یک CommandText بنویسم باید بینشون "و " بزارم یا علامت خاصی نیاز هست؟

    سوال دیگه ام این هست که شرط where که در دستور زیر گذاشتم آیا درست هست به این صورت نوشتنش؟

     
    cmd.CommandText = " INSERT INTO shakhes2 VALUES(" & m & "," & a & ") where idshakhes<>" & m


  10. #10
    کاربر دائمی آواتار mehrnoosh_al62
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شمال ایران...
    پست
    374

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    نه به هیچ علامت خاصی نیاز نیست میتونی پشت هم همه دستور ها رو بنویسی و بینشون فقط یه space بذار البته برای شکیل تر بودن کد بهتره هر دستور رو تو یه خط بنویسی
    در مورد دستورت هم شرط where درسته ولی تو دستور insert باید فیلد هایی که میخوای بهشون مقدار insert کنی مشخص باشه
    insert into table1(field1,field2)values(value1,value2)
    ]

    در ضمن تعریف پارامترها یادتون نره...

  11. #11

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    ممنونم از لطفت
    من همه دستورات رو به صورت زیر کنار هم نوشتم ولی خطای end of statment expected می گیره

    cmd.CommandText = " INSERT INTO shakhes2 VALUES(" & m & "," & a & ")where id <>" & m & "" "UPDATE shakhes2 SET id=" & m & "WHERE id = " & m & "" "UPDATE shakhes2 SET sal81 =" & a & " where id=" & m & ""


    راستی شما که گفته بودی اول سطر قبلی رو delete کنم و بعد سطر جدید رو insert کنم می شه لطفا یک مثال برام اینجا بذاری؟
    آخرین ویرایش به وسیله bahar2008 : پنج شنبه 06 تیر 1387 در 22:52 عصر

  12. #12

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    من کد برنامم رو به جای اینکه insert کنم و delete کنم به این صورت نوشتم و بهش گفتم که اگر همچین ردیفی وجود داره عمل insert رو انجام بده ولی نمی دونم چرا خطای زیر رو داد

    If DataGridView1.CurrentRow.Cells(0).Value Then
    For j AsInteger = 0 To DataGridView2.RowCount - 1
    If DataGridView2.Rows(j).Cells(0).Value Then
    If DataGridView2.Rows(j).Cells(4).Value <> 0 Then
    a = DataGridView1.CurrentRow.Cells(4).Value / DataGridView2.Rows(j).Cells(4).Value
    m = (DataGridView1.CurrentRow.Cells(1).Value * 100) + DataGridView2.Rows(j).Cells(1).Value
    cmd.CommandText =
    " select * from shakhes2 where idshakhes='" & m & "' and sal81 = '" & a & "'"
    dr = cmd.ExecuteReader()
    If dr.hasrows = TrueThen
    dr.read()
    cmd.CommandText =
    " UPDATE shakhes2 SET idshakhes,sal81 =" & m & "," & a & " WHERE idshakhes = " & m
    cmd.ExecuteNonQuery()
    Else
    cmd.CommandText = " INSERT INTO shakhes2(idshakhes,sal81) VALUES(@m,@a)"
    cmd.Parameters.Add("@idshakhes", SqlDbType.Int)
    cmd.Parameters.Add(
    "@sal81", SqlDbType.Int)
    cmd.Parameters(
    "@idshakhes").Value = m
    cmd.Parameters(
    "@sal81").Value = a
    cmd.ExecuteNonQuery()
    EndIf
    Else : a = 0
    EndIf
    EndIf
    Next

    پیغام خطایی که صادر می کنه
    آخرین ویرایش به وسیله bahar2008 : جمعه 07 تیر 1387 در 14:11 عصر

  13. #13

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    خواهشا دوستان یکی به من کمک کنه
    آخه چرا این پیغام خطا رو داده؟

  14. #14

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    یعنی هیچ کسی نمی دونه این پیغام خطا برای چی هست؟
    کجای کد نویسی ام اشتباه بوده که این پیغام رو داده؟
    خواهشا دوستان خوبم یکی جواب منو بده

  15. #15
    کاربر دائمی آواتار kablayi
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    شیراز
    پست
    773

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

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

  16. #16
    کاربر دائمی آواتار kablayi
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    شیراز
    پست
    773

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    نقل قول نوشته شده توسط bahar2008 مشاهده تاپیک
    من کد برنامم رو به جای اینکه insert کنم و delete کنم به این صورت نوشتم و بهش گفتم که اگر همچین ردیفی وجود داره عمل insert رو انجام بده ولی نمی دونم چرا خطای زیر رو داد

    If DataGridView1.CurrentRow.Cells(0).Value Then
    For j AsInteger = 0 To DataGridView2.RowCount - 1
    If DataGridView2.Rows(j).Cells(0).Value Then
    If DataGridView2.Rows(j).Cells(4).Value <> 0 Then
    a = DataGridView1.CurrentRow.Cells(4).Value / DataGridView2.Rows(j).Cells(4).Value
    m = (DataGridView1.CurrentRow.Cells(1).Value * 100) + DataGridView2.Rows(j).Cells(1).Value
    cmd.CommandText =
    " select * from shakhes2 where idshakhes='" & m & "' and sal81 = '" & a & "'"
    dr = cmd.ExecuteReader()
    If dr.hasrows = TrueThen
    dr.read()
    cmd.CommandText =
    " UPDATE shakhes2 SET idshakhes,sal81 =" & m & "," & a & " WHERE idshakhes = " & m
    cmd.ExecuteNonQuery()
    Else
    cmd.CommandText = " INSERT INTO shakhes2(idshakhes,sal81) VALUES(@m,@a)"
    cmd.Parameters.Add("@idshakhes", SqlDbType.Int)
    cmd.Parameters.Add(
    "@sal81", SqlDbType.Int)
    cmd.Parameters(
    "@idshakhes").Value = m
    cmd.Parameters(
    "@sal81").Value = a
    cmd.ExecuteNonQuery()
    EndIf
    Else : a = 0
    EndIf
    EndIf
    Next

    پیغام خطایی که صادر می کنه
    دوست عزیز شما تو تعریف پارامترها مشکل دارید ...

    پارامترهای شما a@ و m@ ...
    idshakhes وsal81 هم مقادیری که بایستی پارامترها رو با اونا مقدار دهی کنی ...


    cmd.Parameters.Addwithvalue("@m",idshakhes)
    cmd.Parameters.Addwithvalue("@a",sal81)

  17. #17
    کاربر دائمی آواتار محمدامین شریفی
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران - شیراز
    پست
    1,302

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    نقل قول نوشته شده توسط bahar2008 مشاهده تاپیک
    نه دوست عزيز
    من مي خوام اگر اطلاعات رديف يكي بود جايگزين همون رديفي بشه كه اطلاعاتش با اطلاعات وارد شده جديد بشه.
    يعني اگر يك رديف در ديتا گريد از اعداد 2 و 5 و 8 دارم و وارد بانك مي كنم و در بانك هم رديفي مانند 2 و 5 و 7 دارم جايگزين اون رديف اول بشه و اطلاعات رو update كنه ولي به اين صورتيكه من نوشتم فيلد به فيلد اين كار رو انجام مي ده
    نمونه ای از حذف سطرهای اظافی:
    select distinct cname,crs.C#‎,term
    from sec,crs
    where sec.C#‎=crs.C#‎ and term>851

  18. #18

    نقل قول: تشخیص تکراری بودن یک ردیف در بانک

    نقل قول نوشته شده توسط kablayi مشاهده تاپیک
    سلام ...
    اگر جایی کانکشن رو open کرده باشی بایستی اونو ببندید ...
    کد شما نامفهومه ... معلوم نیست قصدتون چیه ...
    شما اطلاعات جدید رو کجا وارد میکنید ... یعنی کاربر او مقادیر جدید رو جایی تایپ میکنه یا خودتون توی برنامه بدست میآرید...
    اگر یه کم منظم تر برنامه بنویسید مشکلی پیش نمی آد ....
    من كانكشن رو در آخر برنامم بستم دوست عزيز مشكل از excute reader هست كه مي گه بايد بسته بشه كه با اينكه اونو هم مي بندم ولي باز هم همين پيغام رو مي ده

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

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