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

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

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

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

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

گرفتن عبارت Sql مربوط به کوئری یا تغییر آن و تعداد فیلدها و نام فیلد کوئری



ویژگی SQL حاوی عبارت یا دستور SQL است که نحوه انتخاب ، گروه بندی و ترتیب رکوردها را هنگام اجرای کوئری تعیین می کند. می توان از کوئری برای انتخاب رکوردهایی برای گنجاندن در شئ رکوردست استفاده کرد.همچنین می توان اکشن کوئری ها را برای اصلاح بدون ارجاع به رکوردها تعریف کرد.


نوشتار SQL مورد استفاده در یک کوئری باید با SQL موتور کوئری مطابقت داشته باشد که بر اساس نوع فضای کاری تعیین میشود. در یک فضای کاری مایکروسافت اکسس ، از گویش  یا زبان Microsoft Access Sql استفاده کنید مگر اینکه یک کوئری pass-through ایجاد کنید در اینصورت باید از زبان ( dialect  ) سرور استفاده کرد.


اگر عبارت SQL شامل پارامترهایی باشد باید آنها را قبل از اجرا تنظیم کنید . تا زمانیکه پارامترها تنظیم مجدد نشوند ، هر بار که کوئری اجرا می شود ، همان مقادیر پارامتر اعمال می گردد.



You should not use SET except with objects. You need an object for QueryDefs, so:

SET  برای Objects استفاده می شود.

Dim qd As QueryDef
Set qd =CurrentDb.QueryDefs("MyQuery")
qd.SQL = "SELECT Category FROM Categories"


در لینک زیر ویژگیهای دیگر  این آبجکت یا شئ وجود دارد.

querydef-properties-dao

گرفتن تعداد فیلدهای کوئری مورد نظر



QueryDefs("QueryName").Fields.Count

گرفتن نام اولین فیلد از کوئری مورد نظر

QueryDefs("QueryName").Fields(0).Name

پس ملاحظه فرمودید از صفر شروع می شود



دوستان عزیز لطفا شرکت در نظرسنجی فراموش نشود











ساختن دوباره Primary keys



زمانیکه در جدول سینگلی که فیلد AutoNumber دارد رکوردی را حذف میکنید دیگر شماره های پشت سر هم را ندارید و می بایست چاره ای بیاندیشید یک راه این است که جدول را در نمای دیزاین باز کنید فیلد AutoNumber را حذف کنید جدول را ببندید و Compact Database را از Option  بزنید و دوباره فیلد را به جدول اضافه کنید. برای جداولی که بهم ربط دارند در پیوندها توصیه آفیس را اجرا کنید با عنوان Reset AutoNumber.


Add This Code on Form Close Event whether you add new record or delete, it will recreate the Primary Keys from 1 to Last record.This code will not disturb other columns of table.

کد زیر را به رویداد Close فرمتون اضافه کنید مان Add یا Delete کردن رکورد جدید دوباره Prinmary Keys را از یک تا آخرین رکورد می سازد.این کد فقط مربوط به اولین فیلد است و به سایر ستون های جدول اعمال نمی گردد 

Sub updatePrimaryKeysOnFormClose()

Dim i, rcount As Integer 
'Declare some object variables 
Dim dbLib As Database 
Dim rsTable1 As Recordset 
تنظیم کردم dbLib به دیتابیس جاری
'Set dbLib to the current database (i.e. LIBRARY)
Set dbLib = CurrentDb
باز کردن شئ رکوردشت برای جدول Table1 
'Open a recordset object for the Table1 table
Set rsTable1 = dbLib.OpenRecordset("Table1")
شمارش رکوردهای رکوردست 
rcount = rsTable1.RecordCount 
'== Add New Record ============================
اضافه کردن رکورد جدید البته از Edit استفاده شده می توانید از rs.MoveFirst استفاده کنید 
'Rs.MoveLast
'Rs.MoveFirst
'rCount=Rs.RecordCount

 For i = 1 To rcount 
With rsTable1 
.Edit 
.Fields(0) = i 
.Update 
'-- Go to Next Record ---
.MoveNext 
End With 
Next 
Set rsTable1 = rsTable1 
End Sub



alter-table-statement-microsoft-access-sql


Sql  : (AutoNumber Field Value )

CurrentDB.Execute "ALTER TABLE yourTable ALTER COLUMN myID COUNTER(1,1)"






ران کردن کوئری ها یا اجرای عبارات Sql ( با سرعت خوب )


مثل RunSql هشدار نمیدهد ولی سرعت خوبی دارد اگر dbFailOnError استفاده شود در صورت خطا طبق گفته ی داکیومنت در زیر Roll Back میشود .



CurrentDB.Execute