PDA

View Full Version : سوال: اشکال این کد چیه ؟



ELI994
یک شنبه 21 مهر 1392, 13:40 عصر
Q1->SQL->Clear();
Q1->SQL->Add(" select * From T2 ");
Q1->Active = true;
int i;
for(i=1; i<=Q1->RecordCount ; ++i )
{
Q2->SQL->Clear();
Q2->SQL->Add( " Update T1 set T1.name = '" + Q1->FieldByName("name")->AsString + "'");
Q2->SQL->Add( " from T2,T1 where T1.Pid = T2.Pid " );
Q2->ExecSQL();
}

با سلام
من این کد رو نوشتم و آپدیت هم انجام ولی یه ایرادی داره اونم اینه که توی فیلد نام فقط فیلد اول رو برمیداره و توی تمام فیلدها جدول مقصد اضافه میکنه . چرا ؟

firststep
یک شنبه 21 مهر 1392, 13:52 عصر
for(i=1; i<=Q1->RecordCount ; ++i )
{
Q1->RECNO=I;

Q2->SQL->Clear();
Q2->SQL->Add( " Update T1 set T1.name = '" + Q1->FieldByName("name")->AsString + "'");
Q2->SQL->Add( " from T2,T1 where T1.Pid = T2.Pid " );
Q2->ExecSQL();
}

ELI994
یک شنبه 21 مهر 1392, 13:58 عصر
استفاده از recno هم باعث شد که محتوای آخرین فیلد رو بخونه و در جدول دوم همون رو به صورت تکراری درج کنه .چرا ؟

ELI994
دوشنبه 22 مهر 1392, 12:41 عصر
کسی نیست یه جوابی یه راهنمایی بکنه ؟

مجتبی نیکوبیان
سه شنبه 23 مهر 1392, 11:01 صبح
عزیزم شما وقتی Q1 رو اکتیو می کنی اشاره گر جدول روی رکورد اول هست. بعد میای به تعداد رکورد ها مقدار نام رکورد اول T1 رو تو جدول T2 میریزی.
نکته اینجاست که هربار که حلقه اجرا میشه باید اشاره گر T1 رو ببری جلو


Q1->SQL->Clear();
Q1->SQL->Add(" select * From T2 ");
Q1->Active = true;
int i;
for(i=1; i<=Q1->RecordCount ; ++i )
{
Q2->SQL->Clear();
Q2->SQL->Add( " Update T1 set T1.name = '" + Q1->FieldByName("name")->AsString + "'");
Q2->SQL->Add( " from T2,T1 where T1.Pid = T2.Pid " );
Q2->ExecSQL();
ًQ1->Next;
}

ELI994
شنبه 27 مهر 1392, 11:15 صبح
سلام مرسی از توجهتون
تو این حالت هم مشکل حل نشد
میدونین مشکل اینه که توی آپدیت انگاری مقایسه pid ها انجام نمیشه

یوسف زالی
شنبه 27 مهر 1392, 11:44 صبح
اول که این زبان چیه؟
مگه تالار دلفی نیستیم؟
بعدش:


from T2,T1

چرا؟ مگر T1 جلوی Update ذکر نشده؟
From T2 کافیه.