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

نام تاپیک: update کردن جدول بر اساس فیلدی غیر از کلید اصلی

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    73

    update کردن جدول بر اساس فیلدی غیر از کلید اصلی

    سلام به دوستان عزیز
    آیا جدولی را میشه بر اساس فیلدی غیر از کلید اصلی اون Update کرد ؟ مثلا در کد زیر :

    with FrmDMTransport.ADOQGasCar do
    begin
    FrmDMTransport.ADOTGasCar.Active:=false;
    FrmDMTransport.ADOQGasCar.SQL.Clear;
    FrmDMTransport.ADOQGasCar.SQL.Text:=' Update Gas_Car set Pelak= '''+TxtUpCarPelak2.Text+''' WHERE Pelak='''+TxtUpCarPelak1.Text+''' ';
    FrmDMTransport.ADOQGasCar.ExecSQL;
    FrmDMTransport.ADOTGasCar.Active:=true;
    FrmDMTransport.ADOTGasCar.Close;
    FrmDMTransport.ADOTGasCar.open;
    end;

    در کد بالا پلاک ، کلید اصلی جدول Gas_Car نیست .
    کد بالا زمان اجرا Error میده . آیا اصولن میشه همچین کاری کرد و روش اون به چه صورت هست؟
    ممنون از همه دوستان

  2. #2
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: update کردن جدول بر اساس فیلدی غیر از کلید اصلی

    كد SQL درسته. فقط چرا بعد از ExecSQL دستور Active = True رو اجرا مي كني. همين باعث خطا مي شه

  3. #3

    Lightbulb نقل قول: update کردن جدول بر اساس فیلدی غیر از کلید اصلی


    with FrmDMTransport.ADOQGasCar do
    begin
    Active:=false;
    SQL.Clear;
    SQL.Add('Update Gas_Car set Pelak = '+QuotedStr(TxtUpCarPelak2.Text)+
    ' WHERE Pelak = '+QuotedStr(TxtUpCarPelak1.Text));
    ExecSQL;
    end;

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    73

    نقل قول: update کردن جدول بر اساس فیلدی غیر از کلید اصلی

    نقل قول نوشته شده توسط merced مشاهده تاپیک
    كد SQL درسته. فقط چرا بعد از ExecSQL دستور Active = True رو اجرا مي كني. همين باعث خطا مي شه
    سلام
    ممنون . حق با شماست . چرا با False و True کردن اکتیو AdoT خطا ایجاد میشه؟
    یک سوال کلی؟

    1)چه زمانی اکتیو Adotable بایستی False و True بشه و چه زمانی AdoQuery ؟
    منظورم در دستورهای Select ، insert ، update ، Delete هست.

    2) چه زمانی باید close و Open بشه؟ (اصولا بین False و True کردن و Close وopen کردن چه تفاوتی هست؟)

    از همه دوستان عزیز ممنون
    شاد و پیروز

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1388
    محل زندگی
    جزيره كيش
    سن
    53
    پست
    61

    نقل قول: update کردن جدول بر اساس فیلدی غیر از کلید اصلی

    سلام دوست عزيز
    در ADOQuery شما ميتونيد دستورات SQL رو بنويسيد و اجرا كنيد اما اگه نتيجه دستوري كه اجرا ميكنيد يك جدول باشه مثل نتيجه دستور Select اونوقت بايد ADOQuery رو Open كنيد ولي وقتي دستوري كه در ADOQuery مينويسيد فقط تغييري روي DataBase اعمال ميكنه يا عمليات خاصي رو انجام ميده كه خروجي به شكل جدول نداره اونوقت بايد از دستور ExecSQL استفاده كنيد.
    اما بين False و True كردن جدولها و چه از نوع Query و چه از نوع Table و ‍Closeو Open كردن اونها هيچ تفاوتي وجود نداره اشكالي هم كه در برنامه شما بوده بخاطر تفاوت بين Trueو False كردن با Open و Close كردن AdoQuery نبوده بلكه به خاطر اينه كه شما دستور Update رو داخل ADoQuery نوشتيد كه نتيجه اون يك جدول نيست بلكه تغييراتي رو در DataBase اعمال ميكنه و بعد خواستيد ADOQuery رو Open كنيد يا Active اون رو True كنيد.
    به هر حال همونطور كه گفتم براي دستور هايي كه خروجي اونها جدول نيست مثل Update,Delete,Insert,... حتما بايد از ExecSQL استفاده كنيد. كه دوست عزيزمون هم اين مطلب رو به درستي بيان كرده اند.

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

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