View Full Version : سوال: کپی کامل یک تیبل به تیبل دیگه
Mask
شنبه 16 بهمن 1389, 20:45 عصر
با سلام
بنده برای این کار از حلقه for استفاده میکنم که چنتا مشکل داره.
اول اینکه اگه تعداد رکوردها زیاد باشه برنامه قفل میشه و دوم اینکه سرعتش کمه.
آیادوستان دستور sql سراغ دارند که این کار رو سریعا انجام بدهم.
ممنون.
JavanSoft
شنبه 16 بهمن 1389, 21:15 عصر
از يك Query استفاده كنيد و
Select * Into NewTbl From Tbl
Mask
یک شنبه 17 بهمن 1389, 23:52 عصر
ممنون دوست عزیز.
اما من هر کاری کردم نتونستم.
لطف کنید یه نمونه عملی برام بزارید.
ممنونم.
pezhvakco
دوشنبه 18 بهمن 1389, 09:08 صبح
سلام :
این کد دستور رو با فراخوانی توسط یک ADOCommand امتحان کنین :
INSERT INTO Table2
SELECT *
FROM Table1
Mask
سه شنبه 19 بهمن 1389, 00:55 صبح
ممنون از دوستان.
هر چی امتحان کردم نشد.
لطفا یه نمونه که این کار رو انجام میدهد اینجا قرار بدید.
ممنون.
pezhvakco
سه شنبه 19 بهمن 1389, 09:36 صبح
INSERT INTO Table2
SELECT *
FROM Table1
ما زمانی می تونین این کد دستور رو بکار بگیرین که هر دو جدول ار نظر ستون ها (نام و ساختار ) یکسان باشند و اگر این طور نباشه باید نام ستون ها رو برای هر دو جدول به ترتیب بنویسید.
INSERT INTO Table1
(Col1)
SELECT Col2
FROM Table2
هر چی امتحان کردم نشد.
خطا میده ؟
لطفا یه نمونه که این کار رو انجام میدهد اینجا قرار بدید.
همون کد دستور این کار رو انجام میده . شما می تونی تو Enterprise امتحان کنی.
Mask
سه شنبه 19 بهمن 1389, 16:26 عصر
با سلام
بازم نتونستم.!!
یه نمونه از نوع نوشتن برنامم رو گزاشتم.
بهم بگید اشتباهم کجاست.
ممنونم از دوستان عزیز.
pezhvakco
سه شنبه 19 بهمن 1389, 20:59 عصر
اگه درست فهمیده باشم، شما با این کد دستور به جدول یک داده اضافه می کنی :
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ADOQuery1.Insert;
ADOQuery1.FieldByName('name').Text:='123456789';
ADOQuery1.FieldByName('famil').Text:='asdfghjkklll ';
ADOQuery1.FieldByName('kod').Text:='nvmcertyuiioop pp';
ADOQuery1.Post;
end;
و با این کد دستور می خوای از جدول 2 ( که خالیه ) به جدول 1 داده بریزی :
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('INSERT INTO Table1 (Name) SELECT Name FROM Table2');
ADOQuery2.open;
end;
شما بهتره برای انجام دستورات اجرایی ADOCommand رو بکار بگیری :
ADOCommand1.CommandText:='INSERT INTO Table1 (Name) SELECT Name FROM Table2';
ADOCommand1.Execute;
و همچنین چرا ADOQuery رو برای ارتباط با جدول بکار گرفتی . به نظر من بهتره ADODataSet رو بکار بگیری .
Mask
سه شنبه 19 بهمن 1389, 23:03 عصر
شما بهتره برای انجام دستورات اجرایی ADOCommand رو بکار بگیری :
مسکل این گونه کد نویسی چیه؟و استفاده از ADOCommand چه محاسنی داره؟
من تا حالا از ADOCommand استفاده نکردم.اولین بارمه.
و همچنین چرا ADOQuery رو برای ارتباط با جدول بکار گرفتی . به نظر من بهتره ADODataSet رو بکار بگیری .
منظورتون چیه؟
متشکر از جوابهایی که میدید.
pezhvakco
چهارشنبه 20 بهمن 1389, 09:43 صبح
یه جا خوندم
ابزار ADO دارای سه جزء اصلی به نام های :
1 - ADOConnection برای اتصالات پایگا ه داده
2 - ADOCommand برای اجرای فرامین SQL
3 - و ADODataSet برای اجرای درخواست هایی که مجموعه نتیجه ای را برمی گرداند .
و دارای سه جزء سازگاری است به نام های ADOTable و ADOQuery و ADOStoredProc که می توانند برای انتقال برنامه های مبتنی بر BDE به ADO آن ها را بکار بگیریم .
و در آخر، ابزار RDSConnection به کاربر اجازه دستیابی با داده در برنامه های چند ردیفی راه دور را می دهد .
Mask
چهارشنبه 20 بهمن 1389, 12:12 عصر
ممنون از شما دوست عزیز.
بازم با ADOCommand هم نتونستم:گریه::گریه:
اگه ممکنه براتون ، تغییرات لازم در نمونه برنامه ای که آپلود کردم رو انجام بدید و بزارید اینجا تا کامل متوجه بشم.
ممنونم ازتون.
pezhvakco
چهارشنبه 20 بهمن 1389, 13:23 عصر
امتحان کنید :
http://rapidshare.com/files/446984503/Project.rar
Mask
چهارشنبه 20 بهمن 1389, 14:39 عصر
واقعا دم شما گرم.
من تا حالا از این کامپوننت ها استفاده نکرده بودم.
خیلی با حال و جالب بود.
چنتا سوال دارم ... اگه محبت کنید و جواب بدید:
1- من قبل از ADOQuery و ADOTable برای اینسرت یا کوئری یا کاهای دیگه استفاده میکردم... آیا اشتباه میکردم؟ در صورتی که برنامم کار هم میداد. اما سرعتش یکم پایین بوده.
2- آیا کامپوننت های ADOCommand وADODataSet سرعتشون بالا تر از ADOTable و ADOQuery هست؟
3- آیا منبع یا فایل آموزشی دارید که Properties و events های این دو کامپوننت رو به صورت کامل توضیح داده باشه؟
4- آیا منبعی برای دستورات sql استفاده شده در ADOCommand دارید. یا سراغ دارید؟
5- چرا وقتی این دستور sql رو در ADOQuery مینوشتم eroore میداد؟ مگه این خودش یه دستور sql نیست.؟
6- ممنونم ازتون.
pezhvakco
چهارشنبه 20 بهمن 1389, 18:05 عصر
1- من قبل از ADOQuery و ADOTable برای اینسرت یا کوئری یا کاهای دیگه استفاده میکردم... آیا اشتباه میکردم؟ در صورتی که برنامم کار هم میداد. اما سرعتش یکم پایین بوده.
2- آیا کامپوننت های ADOCommand وADODataSet سرعتشون بالا تر از ADOTable و ADOQuery هست؟
3- آیا منبع یا فایل آموزشی دارید که Properties و events های این دو کامپوننت رو به صورت کامل توضیح داده باشه؟
4- آیا منبعی برای دستورات sql استفاده شده در ADOCommand دارید. یا سراغ دارید؟
5- چرا وقتی این دستور sql رو در ADOQuery مینوشتم eroore میداد؟ مگه این خودش یه دستور sql نیست.؟
6- ممنونم ازتون.
" بهتر بود یه تایپیک تازه می زدین "
1 - اشتباه نیست ولی همان طور که گفتم بهترین گزینه نیست .
2 - سرعت شون رو دقیقا نمی دونم ولی بهینه تر کار می کنن، چون برای این کار طراحی شدن .
3 - منبع آموزشی من بر مبنای اون حرف می زنم کتاب " خود آموز دلفی 10 - 2006 " ترجمه رامین مولاناپور است .
4 - نفهمیدم چی می خوایین .
5 - تا جایی که می دونم کوئری ( ADOQuery ) برای گرفتن خروجی است و نه اجرای دستورات اجرایی .
6 - اگه امکانش باشه استادان هم راهنمایی داشته باشن ...
Mask
شنبه 23 بهمن 1389, 13:27 عصر
ممنون.
یه سوال دیگه داشتم.
اون کدی که گزاشتید ماله اینه که یه فیلد رو کپی کنید.
اما اگه بخواهیم چنتا فیلد مشخص و کپی کنیم چی؟
یا همه فیلدها رو؟
ممنون.
pezhvakco
شنبه 23 بهمن 1389, 20:58 عصر
اون کدی که گزاشتید ماله اینه که یه فیلد رو کپی کنید.
اما اگه بخواهیم چنتا فیلد مشخص و کپی کنیم چی؟
یا همه فیلدها رو؟
چند ستون خاص با شرط خاص =>
INSERT INTO Table2
(Table2.Col1, Talbe2.Col2)
SELECT Tabel1.Col1, Table1.Col2
FROM Table1
WHERE (Table1.Col3 = 2)
همه ستون ها خاص با شرط خاص =>
INSERT INTO Table2
SELECT *
FROM Table1
WHERE (Table1.Col3 = 2)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.