PDA

View Full Version : انتقال اطلاعات از یك جدول با یك جدول دیگه‌ بیدون تیكراریها



akar_program
پنج شنبه 10 شهریور 1390, 19:25 عصر
سلام دوستان من میخواهم تمامی ریكورد های یك جدول در ادو تبل2 با جدول ادوتیبل 1 ببرم ولی انهای كه‌ قبلا توش هست بمونه‌ ولی انهای كه‌ مسلن شماره‌ تلفونش یكی هست دوباره‌ سبت نشه‌
این كد برای اون كار كه‌ گفتم ایستفاده‌ كرد
var
i:Integer;
begin
for I:= 1 to ADOTable2.RecordCount do
begin
if adotable1.locate('Number',ADOTable2.FieldByName('N um').AsString,[]) then
begin
showmessage('ئه‌م ژماره‌ مۆبایله‌ پێشتر دێردراوه‌');
exit;
end
else
ADOTable1.Append;
ADOTable1.FieldByName('Name').AsString:=ADOTable2. FieldByName('Name').AsString;
ADOTable1.FieldByName('Number').AsString:=ADOTable 2.FieldByName('Num').AsString;
ADOTable1.Post;
allnum.Caption:=IntToStr(ADOTable2.RecordCount);
numforsend.Caption:=IntToStr(ADOTable1.RecordCount );
balance.Caption:=IntToStr(StrToInt(numforsend.Capt ion)* 25);
end;
end;
جواب میده‌ ولی اگر یك تكراری توش باشد دیگه‌ نمیریزه‌

سعید صابری
پنج شنبه 10 شهریور 1390, 20:13 عصر
درسته
خودت براش چنین شرطی تعیین کردی

akar_program
پنج شنبه 10 شهریور 1390, 23:53 عصر
ولی اگر یك ریكورد قبلا وجود داشته‌ باشد برنامه‌ هیچ كدوم از ریكوردهایدیگه‌ هم نمیریزه‌
من میخواهم هر ریكور كه‌ میخواهم انتقال بدم اول جیك كنم ببینم قبلا نیست اگر نبود انتقال بده‌ اگر بود بره‌ بات ریكوردی دیگه‌

سعید صابری
جمعه 11 شهریور 1390, 00:25 صبح
به خاطر اینه شما یک رکورد از adotable2 را همیشه چک می کنید یعنی به رکورد بعدی نمیرین به همین خاطر بار اول کپی کرده و در مراحل بعدی اجر برنامه کپی نمی کنه.
شما باید با استفاده از adotable2.next به رکورد بعدی برین و اگه میخواین در صورت پیدا شدن رکورد تکراری از حلقه خارج نشه دستور EXIT پاک کنین

برات تصحیحش کردم



var
i:Integer;
begin
for I:= 1 to ADOTable2.RecordCount do
begin
if NOT adotable1.locate('Number',ADOTable2.FieldByName('N um').AsString,[]) then
begin

ADOTable1.Append;
ADOTable1.FieldByName('Name').AsString:=ADOTable2. FieldByName('Name').AsString;
ADOTable1.FieldByName('Number').AsString:=ADOTable 2.FieldByName('Num').AsString;
ADOTable1.Post;

end
else
ShowMessage('تکراری');
ADOTable2.Next;
end



در ضمن اگه از adoquery ودستورات sql استفاده کنی فکر کنم راحت تر باشی