کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

دستور Insert into یا کوئری اپند با استفاده از عبارات Sql در موتور پایگاه داده اکسس



شکل نوشتاری بدین صورت است : 

Insert Into  TableName ( Fields ,,,n) Values (Number,'Text')


داخل Values نمی توان از Select Query استفاده کرد


همانطور که اشاره شد بعد از insert into نام جدول درج میگردد حتما Space رعایت شود بعد داخل پرانتز نام فیلدهای جدول قید میگردد اگر چند فیلد باشد با جداکننده -> ,  از هم جدا می شوند و بعد Values تایپ شده و داخل آن مقادیر هر فیلد قید میگردد اگر عددی نباشد مثل متن باید داخل تک کوتیشن قرار گیرد مثل 'Ali' یا 'S12334' یا '1234 ' ( درسته که عددی می  بینید ولی به Space قبل از 1234 توجه کنید - پس متنی است ) وگرنه خطای نوشتاری بوقوع خواهد پیوست. فیلد با تایپ Date مقدارش بین دو نردبان  یا #  قرار می گیرد. فیلد با دیتاتایپ MultiValued یا Attachmant را در این عبارات بکار نبرید ( در صورت اضافه کردن به این فیلدها با دیتاتایپ یاد شده با خطا مواجه خواهید شد ) چون باید Parent آنها در حال ویرایش درآید و بعد آنها را Manipulate یا دستکاری کرد ( مثل حذف ، برداشتن تیک ، اضافه کردن ) .  رکوردستی که در حالت Edit تنظیم شده و هیچ رکوردی ندارد باعث ایجاد خطای No Current Record می شود پس سعی نکنید در رکوردستی که رکوردی ندارد ویرایش انجام دهید در همین مطالب Run time error را جستجو کنید کامل درباره خطاهای مرسوم توضیح داده شده.



مثال درباره کوئری Append با استفاده از عبارت Sql به نام Insert Into : 


زمان اضافه کردن رکوردی به جدول 1  ، Desc جدول  2 با توجه به PartNo در جدول 2 با inner join گرفته شده و در فیلد Desc جدول 1 درج میگردد سعی کنید قبل از اضافه کردن به جدول PartNo چک شود که در جدول 2 باشد یا کمبوباکس تعبیه کنید که PatNo ها لیست شود و اگر انتخاب نشد خطا بدهد که برای اجرای کوئری اپند کمبو باکس Null نمی گیرد. ( در کمبو باکس خاصیت limit to list را برای Yes قرار بدهید ضمنا Event یا رویدادی وجود دارد ( NotInlist ) می توانید خطای انگلیسی " در لیست وجود ندارد" را به پیام خودتان تغییر دهید.در ضمن ویژگی List Edits را تنظیم کنید که نشود به کمبود باکس اضافه کرد یا آنرا ویرایش کرد .


Table1 :

ID         PartNo  Desc

201       3020    Filter

202      3020    Filter

203     3021    Booster


Table 2 : 

PartNo       Desc  

3020            Filter

3021           Booster


strSql="Insert Into Table1 (ID,PartNo,Desc)" &  _

"Values (" & Me.ID & "," & Me.PartNo & ",'" & _

Dlookup("Desc","Table2","PartNo=" & Me.PartNo) & "')"


چون نمی توان در Values از Select Query استفاده کرد لذا از Dlookup برای گرفتن Desc از جدول 2 استفاده شد.


Docmd.RunSql strSQL


کد اس کیو ال زیر کل جدول New Customers را به جدول Customers اپند می کند 


Insert Into Customers Select * From New Customers


اپند کردن داده های ستون 1 و .... با شرط به ستون های 1 و ....  جدول با نام Table2 


INSERT INTO table2 (column1column2column3,...)
  SELECT column1column2column3, ...
FROM table1 WHERE condition;





برای عدم نمایش پیغام ها مبنی بر اضافه کردن به جدول یا از این کار مطمئنید از دستورات اکشن کوئری مثل SetWarnings استفاده کنید و آنرا خاموش یا Off کنید یا به False تنظیم کنید.




مطالب با توجه به جستجوی عبارات قرار داده خواهد شد 


در تصویر زیر پراپرتی شیت کمبو باکس تب دیتا نمایش داده شده که RowSource تایپی است گزینه های خودتون و از جدول گرفته نشده و در این موارد RowSourceType باید Value List انتخاب شود وگرنه با خطا مواجه می شوید ویژگی limit to list نیز روی No تنظیم شده پس خطای NotInList ندارید و List Edits نیز روی No است که نمی توانید مقادیر لیست باکس کمبو باکس را ویرایش کنید .





لطفا نظر سنجی فراموش نشود