PDA

View Full Version : کپی کردن مقدار مشخصی از جداول DBISAM



nasr
دوشنبه 20 بهمن 1382, 00:42 صبح
سلام
چگونه میشه یه مقدار مشخص از یک جدول را جدا کرده و در جدول دیگه ای قرار داد
عمل CopyTable از کل جدول کپی می گیره درصورتی که ما می خواهیم مثلا تمام آنهایی که اسمشان (علی) است را از یه جدول جدا کنه و در یه جدول دیگه قرار بده
با تشکر

Delphi-Clinic
دوشنبه 20 بهمن 1382, 06:44 صبح
سلام

جدول را بر اساس عبارت مورد نظرتان فیلتر کنید.

سپس با یک حلقه While رکوردهای مورد نظرتان را کپی کنید

در پایان جدول را از حالت فیلتر خارج کنید

jirjirakk
دوشنبه 20 بهمن 1382, 21:44 عصر
با دستورات اس کیو ال هم میتونی

nasr
سه شنبه 21 بهمن 1382, 11:25 صبح
سلام
من می خواهم جداولی که کپی میشه داخل یه شاخه ای در Database موجود روی سرور ذخیره بشه
برای کپی گرفتن روی همون شاخه دیتابیس مشکلی ندارم و درست انجام میشه
ولی اگه بخوام در یه زیر شاخه کپی بشه این کار را انجام نمیده و با پیام خطا مواجه می شم
متنی که نوشتم هم اینه
DBISAMTable1.CopyTable('project2'+ '\Make','ali');k
Project2 نام دیتابیس و Make نامه شاخه ای است که در شاخه دیتابیس ساخته ام
ممنون

Gladiator
سه شنبه 21 بهمن 1382, 11:50 صبح
با سلام

:)

شما باید یک Data Module درست کنی و کلیه تیبل ها رو بروی اون قرار بدی . اصلا لازم نیست که توی خطوط فرمان آدرس دیتابیس و غیره رو بنویسی . خیلی ساده میتونی توی اون Data Module دیتابیسها و تیبل ها رو قرار بدی و توی برنامه ازشون استفاده کنی .

موفق باشی .

سه شنبه 21 بهمن 1382, 12:57 عصر
سلام

جدول را بر اساس عبارت مورد نظرتان فیلتر کنید.

سپس با یک حلقه While رکوردهای مورد نظرتان را کپی کنید

در پایان جدول را از حالت فیلتر خارج کنید
با اجازه اقای کلینیک
ولی هرگز این کارو نکن چون اگه تعداد رکورد ها به 50000 تا برسه اون وقته که 3-4 دقیقه باید صبر کنی تا جواب بگیری
اینجوری:

insert into table2 select * from table1 where table1.name='ali'

nasr
سه شنبه 21 بهمن 1382, 13:26 عصر
سلام
من وقتی اینکار را می کنم از کل جدول کپی می گیره در صورتی که من اون را فیلتر هم می کنم
[/img]
DBISAMTable1.Filter := 'Code Like ''%' + edit1.text + '%''';
DBISAMTable1.Filtered := true;
DBISAMTable1.CopyTable('project2','1NewCode');

moradi_am
سه شنبه 21 بهمن 1382, 19:24 عصر
1- به جواب آقای دلفی کلینیک توجه نکردید ! اگر میخواهید از فیلتر استفاده کنید باید از حلقه Do While برای کپی رکوردهای فیلتر شده استفاده کنید .
2- طبق روش macmilad

insert into table2 select * from table1 where table1.Code Like ''%' + edit1.text + '%'''
3-dbisam خودش امکان اینکاررا دارد من قبلا دیده ام که نتیجه query را به جدول جدید منتقل میکند (شبیه فاکس که احتمالا شما قبلا با فاکس کارکرده اید ) ولی الان یادم نیست .

moradi_am
سه شنبه 21 بهمن 1382, 19:30 عصر
پیدا کردم .مثال :

SELECT *
INTO "c:\MyData\Results"
FROM "Orders" where table1.cod like ...

Gladiator
سه شنبه 21 بهمن 1382, 19:52 عصر
با سلام مجدد

چرا این همه راه رو دور میکنید ؟

همون چیزی که کلینیک گفت رو میتونی انجام بدی ولی به جای دادن آدرس تیبل مقصد این تیبل رو قبلا روی Data Module قرار بده و آدرس اونرو بده .

همین .