View Full Version : انتقال رکورد از sql به access
mohsen_r
جمعه 30 شهریور 1386, 12:36 عصر
سلام
من میخواستم اطلاعات یک جدول از sql را به یک access با کمترین خط دستوری انتقال بدم
البته نام فیلدها یکسان می باشد این کار را می خواخم از داخل برنامه انجام بدم نگید از export استفاده کنم
با تشکر
پرواز
جمعه 30 شهریور 1386, 12:40 عصر
از ADO استفاده کن. هر دوتا جدول (مبدأ و مقصد) رو تو برنامه باز کن.
جدول مبدأ رو از ابتدا پیمایش کن و مقدار فیلدهای جدول مقصد رو برابر فیلد مشابه از جدول مبدأ قرار بده.
البته این توضیح کلی بود.
اگه مشکلی بود مطرح کن.
mohsen_r
جمعه 30 شهریور 1386, 13:05 عصر
تعداد فیلدها زیاد است من از ado استفاده میکنم ولی خوب خطوط زیاد میشه راه حل بهتر و راحتتری آیا هست
پرواز
جمعه 30 شهریور 1386, 13:22 عصر
بله.
در یه صورت میشه این کار رو انجام داد.
اگه ترتیب و تعداد فیلدهای هر دوتا جدول برابر باشه راه حل داره.
var
i: Integer;
begin
ADOSource.First;
while not ADOSource.Eof do
begin
for i := 0 to ADOTable1.FieldCount - 1 do
begin
ADODest.Insert;
ADODest.Fields[i] := ADOSource.Fields[i];
ADODest.Post;
end;
ADOSource.Next;
end;
end;
در کد بالا ADOSource نام جدول مبدأ و ADODest نام جدول مقصده.
پرواز
جمعه 30 شهریور 1386, 13:25 عصر
البته این کد رو همین الان نوشتم و کامپایلش نکردم!
ولی فکر کنم اشکالی نداشته باشه.
mohsen_r
جمعه 30 شهریور 1386, 15:10 عصر
من اینکار کرده بودم امابا نوشتن دوباره شما دیدم ADODest.append را جابجا نوشته بودم خیلی ممنون وتشکر مشکلم حل شد
ghabil
جمعه 30 شهریور 1386, 15:37 عصر
بله.
در یه صورت میشه این کار رو انجام داد.
اگه ترتیب و تعداد فیلدهای هر دوتا جدول برابر باشه راه حل داره.
var
i: Integer;
begin
ADOSource.First;
while not ADOSource.Eof do
begin
ADODest.Append;
for i := 0 to ADOTable1.FieldCount - 1 do
ADODest.Fields[i] := ADOSource.Fields[i];
ADODest.Post;
ADOSource.Next;
end;
end;
در کد بالا ADOSource نام جدول مبدأ و ADODest نام جدول مقصده.
الیته کدی که نوشتی درسته ولی خب اینطوری که با اجازت تغییرش دادم یکمی سریعتره ، و کمتر ادیت و پست داره . البته من خودم هم که اینجا آنلاین کد میزارم معمولا تو کدهام زیاد ایراد پیدا میشه:چشمک:
پرواز
جمعه 30 شهریور 1386, 16:11 عصر
تو استادی شما جناب کوشا هیچ شکی وجود نداره.:چشمک:
ممنون که کد رو بهینه کردین.
vcldeveloper
جمعه 30 شهریور 1386, 22:08 عصر
الیته کدی که نوشتی درسته ولی خب اینطوری که با اجازت تغییرش دادم یکمی سریعتره ، و کمتر ادیت و پست داره .
کدش کلا مشکل داشت، چون اصلا رکورد جدیدی در AdoDest ایجاد نمی کرد، فقط یکدور رکوردهای موجود را Edit می کرد.
صحیحش هم همونه که آقای کوشا نوشتند.
پرواز
جمعه 30 شهریور 1386, 22:40 عصر
کدش کلا مشکل داشت، چون اصلا رکورد جدیدی در AdoDest ایجاد نمی کرد، فقط یکدور رکوردهای موجود را Edit می کرد.
صحیحش هم همونه که آقای کوشا نوشتند.
کاملا درسته. ویرایش شد!
من که گفتم کامپایل نکردم. فقط می خواستم به راه حل ارائه کرده باشم.
ولی بازم ممنون از تذکرتون:چشمک:
vcldeveloper
شنبه 31 شهریور 1386, 02:45 صبح
نخواستم ازتون ایراد بگیرم، هدف این بود که کاربری که سوال پرسیده، با این خیال که این دو کد فقط از نظر کارایی با هم اختلاف دارند، اشتباها از کد غلط استفاده نکنه.
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.