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

نام تاپیک: اشكال "تكراري بودن primary key را ميدهد"

  1. #1

    Question اشكال "تكراري بودن primary key را ميدهد"

    سلام
    من با استفاده از ado command مقاديري را در دو جدول وارد ميكنم
    اشكال كارم:
    در هر بار اجرا مقادير درست وارد ميشه اما در يك اجرا اگر دو دفعه بخواهم مقادير را وارد كنم اشكال "تكراري بودن primary key را ميدهد"
    چطور بايد رفعش كنم؟

  2. #2

    نقل قول: اشكال "تكراري بودن primary key را ميدهد"

    ایندکس Primary Key کارش همین است که مقادیر بصورت یکتا و Unique باشند. در طراحی جدول خود دقت لازم را بکنید.

  3. #3

    نقل قول: اشكال "تكراري بودن primary key را ميدهد"

    می تونی قبلش چک کنی اگه وجود داشت insert نکنی !
    خواستن ، توانتستن است !!!

  4. #4
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814

    با سلام

    نقل قول نوشته شده توسط manzare مشاهده تاپیک
    سلام
    من با استفاده از ado command مقاديري را در دو جدول وارد ميكنم
    اشكال كارم:
    در هر بار اجرا مقادير درست وارد ميشه اما در يك اجرا اگر دو دفعه بخواهم مقادير را وارد كنم اشكال "تكراري بودن primary key را ميدهد"
    چطور بايد رفعش كنم؟
    اگر منطورتان Handel خطا با دلفی است که می توانید از Try...Except و یا یک جستجو بر اساس فیلد کلید استفاده کنید.
    ولی اگر منظورتان ندادن چنین پیغامی و ذخیره اطلاعات است که باید PK از روی فیلدهایتان بردارید و سپس یک فیلد دیگر را به عنوان فیلد PK انتخاب کنید.
    موفق باشید

  5. #5
    کاربر دائمی آواتار daffy_duck376
    تاریخ عضویت
    آبان 1385
    محل زندگی
    قزوین
    سن
    41
    پست
    858

    نقل قول: با سلام

    از دستور LOCATE برای چک کردن تکراری نبودن مقدار وارد شده استفاده کن
    table1.locate("feild name",مقداز موردنظر,[])
    اگخ نتیجه TRUE باشه مقدار تکراری هست مگر مه INSERT کن

  6. #6
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814

    با سلام

    نقل قول نوشته شده توسط daffy_duck376 مشاهده تاپیک
    از دستور LOCATE برای چک کردن تکراری نبودن مقدار وارد شده استفاده کن
    table1.locate("feild name",مقداز موردنظر,[])
    اگخ نتیجه TRUE باشه مقدار تکراری هست مگر مه INSERT کن
    دوست عزیز
    به این نکته توجه کنید که Locate فقط رکوردهای داخل DataSet را جستجو می کند و اگر بعد از آخرین Refresh رکوردی اضافه شود مقدار آن در Locate جستجو نمی شود.(در برنامه های چند کاربر)
    اگر هم می خواهید از Locate استفاده کنید قبل از آن حتماً ADO را Close و Open کنید.
    موفق باشید

  7. #7
    کاربر دائمی آواتار zman123456
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    بندرعباس
    پست
    515

    نقل قول: اشكال "تكراري بودن primary key را ميدهد"

    دوستان، به نظر من این مطالب که اینجا نوشتید خیلی خوب هستن و به کار این دوست عزیز میاد ولی بخشی از کارشه که فکر کنم زیاد تو این بحث مشکلی نداشته.
    البته من فکر میکنم که مشکل این دوست عزیز اینه که :
    می خواد یک اطلاعات رو دوبار وارد کنه ولی پیغام میده.
    پس یا باید به قول دوست عزیز pk رو از روی فیلد برداره(خب اگه لازم نداشت که اینطوری طراحی نمی کرد)
    یا باید خودش pk رو در ورود اطلاعاتش تولید کنه(خب باید بزرگترین عدد رو پیدا کنه و یک واحد اضافه کنه)
    یا رو فیلد مورد نظر identity رو فعال کنه و در ورود اطلاعات دیگه بهش کاری نداشته باشه.
    مطالب فقط در جهت تکمیل و وضوح بیشتر گفته های عزیزان ارسال شد.

  8. #8

    Question نقل قول: اشكال "تكراري بودن primary key را ميدهد"

    سلام مرسي كه كمك ميكنيد همونطور كه zaman جان فرمودند
    یا باید خودش pk رو در ورود اطلاعاتش تولید کنه(خب باید بزرگترین عدد رو پیدا کنه و یک واحد اضافه کنه)
    من اين كد را نوشتم اما بازم اشكال گرفت
    ADOCommand1.Parameters.Items[0].Value:= Int(ADOTable1.FieldByName('qcode').Value +1)


    code.rar

  9. #9
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814

    با سلام

    برای به دست آوردن بزرگترین عدد:

    ADO.SQL.Text := 'Select Max(ID) ID From Tbl_Test';
    ADO.Open.
    ADO.FieldByName('ID').Asinteger + 1

    موفق باشید

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

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