PDA

View Full Version : مشکل:ارسال رکورد از جدولی به جدول دیگه با شرط عدم وجود



hp1361
جمعه 28 دی 1386, 18:59 عصر
سلام

من دو تا جدول دارم . میخواهم اطلاعات موجود در جدول اول رو به جدول دوم بریزم . اما بشرطی که رکورد های انتقالی در جدول دوم از قبل وجود نداشته باشه و اگه یکیش موجود بود از اون صرف نظر کنه و بقیه رو وارد کنه .

جدول اول فیلد شماره سرویس داره که بصورت Primary Key هستش. جدول دوم همین فیلد رو داره اما بهمراه RegDate که اونم PrimaryKey دوم هست .

طریقه استفاده از دستور Insert Into رو استفاده کردم اما از عهدش بر نیومدم




Insert Into TableMainData(ServiceCode,ServiceName) Select TableServicesData.ServiceCode,TableServicesData.Se rviceName From TableServicesData where TableServicesData.ServiceCode<>TableMainData.ServiceCode


اینم فایل access استفاده شده

http://hp1361.persiangig.com/programing/MainDataBase.rar

ممنون و منتظرم

SYNDROME
جمعه 28 دی 1386, 20:05 عصر
من می خواهم اطلاعات جدول Table1 را در جدول Table2 بریزم به شرطی که اطلاعات فوق وجود نداشته باشد.فیلد Code فیلد کلیداست.


Insert Into Table2(Name , Family)
Select Name , Family
From Table1
Where Code not In
(Select Code
Form Table2
)

موفق باشید

hp1361
جمعه 28 دی 1386, 20:31 عصر
سلام
دوست عزیز من کد رو بصورت زیر به query اضافه کردم



ADOQuery1.SQL.Add('Insert Into TableTempMainData (ServiceName) Select ServiceName From TableServicesData Where ServiceCode not In (Select ServiceCode Form TableTempMainData)');


اما ارور زیر رو میده



Project Project1.exe raised exception class EOleException with message 'Syntax error. in query
expression 'ServiceCode not In (Select ServiceCode Form TableTempMainData)''. Process stopped. Use
Step or Run to continue.
Project Project1.exe raised exception class EOleException with message 'Syntax error. in query
expression 'ServiceCode not In (Select ServiceCode Form TableTempMainData)''. Process stopped. Use
Step or Run to continue.

SYNDROME
جمعه 28 دی 1386, 22:01 عصر
در کد شما آخرین From را Form نوشته اید.
اصلاح کنید.
موفق باشید

hp1361
جمعه 28 دی 1386, 22:38 عصر
سلام مجدد

مثل اینکه این ارور ها ول کن ما نیستن


Project Project1.exe raised exception class EOleException with message 'Current provider does not
support returning multiple recordsets from a single execution'. Process stopped. Use Step or Run to
continue.


بعد از کمی جستجو در اینترنت و سری زدن به سایت Delphi.About فهمیدم بعد از دستوراتی مثل DELETE , Create,InsertInto که چیزی رو بر نمی گردونن نبایستی از دستور Open استفاده کرد بلکه باید از دستور ExecSQL استفاده کرد .(اینو نوشتم که اگه کسی به مشکل من بر خورد متوجه امر بشه-خودم عاشق کسانی هستم که اینطور توضیح دادن میدن-کامل-)

اقا Syndrom از شما هم ممنونم بابت راهنمایی

دوست عزیز این کدی که شما گفتید رو نمیشه با Join بازسازی کرد؟(جهت اطلاعات خودم میپرسم وگرنه مشکلم حل شده)
و این رکوردهایی که اضافه می کنیم اگه بخواهیم یکی از فیلد ها شو با دستور مقدار بدیم و بعد به جدول دوم اضافه بشه چیکار باید کرد ؟


بازم ممنون