PDA

View Full Version : اضافه کردن رکوردی مشخص از دو جدول به جدولی دیگر



ahmad sajjad
دوشنبه 26 مرداد 1383, 18:13 عصر
من از این دستور برای اضافه کردن رکورد از دو جدول به جدولی دیگر استفاده میکنم
insert into output select D_no,D_date,code,E_date,Num from doc,exist where((e_date <"'+E_dz+'")and(D_date ="'+Tarikh+'"))
error ی که برنامه میده هم اینه : '.'type mismatch in experesion'
می خواستم ببینم مشکل از کجاست که برنامه error میده

_alish_
سه شنبه 27 مرداد 1383, 06:50 صبح
سلام
اگر منظورت از یک دیتابیس به دیتا بیس دیگر نام دیتابیس همراه نقطه بعلاوه جدول لازم است در غیر اینصورت برای کپی دو جدول فکر کنم
from doc,exist باید برای شرط و نام فیلد هایت ازنام جدول بعلاوه نقطه مثلا Exist.e_date استفاده کنی یک مثال هم
INSERT INTO MyTable (PriKey, Description)
SELECT ForeignKey, Description
FROM SomeView

Mbr
سه شنبه 27 مرداد 1383, 08:34 صبح
با سلام
اگر شما از کامپوننت قسمت BDE استفاده می کنید با استفاده از کامپونت Batchmove می توانی این کار را انجام دهی ولی اگر از کامپوننت قسمت ADO استفاده می کنید باید کارهای زیر را انجام دهید :
1- ابتدا یک ADOCONECTION برای دیتابیس مبدا ایجاد می کنید و آنرا به بانک مورد نظرت متصل می کنی
2- یک ADOCONECTION برای دیتابیس مقصد ایجاد می کنید و آنرا به بانک مورد نظر متصل می کنید .
3- سپس با استفاده از دستور INSERT INTO به شرح زیر عمل می کنید .



Insert Into Table2 (field1,field2,field3) VALUES (a1,a2,a3);f

سپس پارامترهای a1,a2,a3 را با استفاده از دستور Param از جدول مبدا انتخاب می کنید . مثال :


dm.table2.Parameters.ParamValues ['a1']:=dm.table1.FieldValues ['name'];

بعد از این این دستورات را داخل یک حلقه While قرار می دهی شرطش را هم بصورتی قرار می دهی که جدول اول به آخر فایل برسد .
س÷س برنامه بطور اتوماتیک از جدول اول اطلاعات را می خواند و در جدول دوم می ریزد . و تا زمان آخرین فیلد این کار را انجام می دهد .
من خودم این کار را انجام داده ام و در برنامه نتیحه داده .
موفق باشید

ahmad sajjad
چهارشنبه 28 مرداد 1383, 18:39 عصر
جناب آقای mbr شما احتمالا سوال مرا اشتباه فهمیده اید و خدمت آقای alish باید عرض کنم که من میخواهم از جدولی به جدولی دیگر اینکار را انجام دهم و با راهکارهای شما هم این error رفع نگردید
متشکر میشوم راهنمایی فرمایید

ahmad sajjad
جمعه 30 مرداد 1383, 19:00 عصر
عینا syntax همین دستور رو با dbisam امتحان کردم درست جواب داد اما بازهم در error bde میده
آخه علتش چیه ؟ بعضی از دستورات sql با یک syntax مثلا در bde درست اجرا میشه و جواب میده اما در یک database دیگه ممکنه جواب نده.علت؟

Mohammad S
شنبه 31 مرداد 1383, 01:57 صبح
علت اینکه syntax دستورات sql متفاوته اینه که در واقع یک سری دستورات پایه ای در مورد sql وجود داره. حالا بعضی شرکتها، این دستورات رو تغییر می دن و یا بعضی هاشو حذف و یا دستورات جدیدی اضافه می کنن. تقریبا در تمام دیتابیسها، تفاوت دستورات اس کیو ال وجود دارد. باید به راهنمای دیتابیس مورد نظر رجوع کنید.

موفق باشید

_alish_
شنبه 31 مرداد 1383, 07:40 صبح
بهتر بود Syntax را می نوشتی :wink:
دوست عزیز حال که از BDE استفاده می کنی بهتر است BatchMove را بکار ببری آسانتر است اگر Error دادبدون این کامپوننت با Index یا PK کار می کند پس یکی از آندو را در جدول داشته باش :D

ahmad sajjad
پنج شنبه 23 مهر 1383, 17:24 عصر
من میخوام یه رکورد خاص رو که از دو تا تیبل بدست اومده به یک تیبل دیگه اضافه کنم
البته بانکم هم BDE است و همونطور که قبلا گفتم با SYNTAX بالا در DBISAM مشکلی نداشتم اما در BDE چرا.
منتظر جواب دوستان هستم

ahmad sajjad
شنبه 25 مهر 1383, 22:11 عصر
یعنی کسی نیست جواب منو بده
اینهمه استاد اینجاست و سوال ها همینجوری بی جواب بمونن
متشکرم

_alish_
یک شنبه 26 مهر 1383, 07:34 صبح
بهتر است آنقسمت از کد و Error را بنویسی تا زود تر جواب بگیری

MiRHaDi
دوشنبه 27 مهر 1383, 21:23 عصر
سلام
Query رو بگیر ولی Select Query باشه نه Insert
بعد یک DBSource بذار وصلش کن به اون یکی دیگه هم بذار بزن به Table مقصد
بعد اینو بزن


Query.first;
while not query.eof do
begin
table.appendrecord([query.fieldvalue['field1'],... .]);
end;

حالا الآن دلفی ندارم !‌ همچین چیزیه :wink:
بای