بهترین روش این است که در ریبون اکسس و تب اکسترنال باتن اکسپورت را زده و بعد از دایالوگ باکسی که باز میشود مسیر فایل را انتخاب کرد و گزینه Save Import/Export در آنجا نحوه ی فاصله گذاری و غیره را می توان تنظیم کرد قبل از ذخیره کردن و با متد DoCmd.RunSavedImportExport میتوان فراخوان کرد .
کپی رکوردست
AutoFit :
تغییر عرض ستون ها یا ارتفاع ردیف ها در رنج تا جایی که مقادیر داخل آن قابل رویت باشد اگر تکستی زیاد باشد به همان اندازه ی طولش کالمن باز میشود.
Between [Start Date] And [End Date] Or ([Start Date] Is
(Null And [End Date] Is Null
Start و End هر دو نال باشند :
در پارت اول قبل از And
Null And Null=Null
در پارت دوم بعد از And
Start is null=True
End is null=True
گفته شد اگر Null باشد تابع True ، IsNull را بر می گرداند پس
داخل پرانتز میشود ( True And True ) که طبق عملگر And نتیجه پارات دوم True می شود
مرحله آخر نتیجه ی پارت اول یعنی Null و پارت دوم True با توجه به Or بین آنهاست نتیجه طبق جد ول دوم : TRUE
نتیجه ی آخر که True هست باعث میشود که تمام مقادر اعمال شود در Boolean گفته شد برای False صفر در نظر می گیریم و برای True هر مقداری غیر از صفر
جدول titles :
title _id type price-------- --------- -----T01 history 21.99T02 history 19.95T06 biography 19.95T13 history 29.99T12 biography 12.9
SELECT title_id, type, priceFROM titles('WHERE (type = 'history('OR type = 'biographyAND price < 20;
title_id type price-------- --------- -----T06 biography 19.95T02 history 19.95T12 biography 12.99
فرض کنید کنترل چک باکسی در فرم ساخته اید به نام Check2 که در فرم اصلی با نام Form3 قرار گرفته میخواهید آن چک باکس را به رکوردسورس فرم وصل کنید به این منظور که هر زمان باتنی با نام فیلتر را فشردید بر حسب تگ آن چک باکس فیلتر در دیتیل اعمال گردد.
در تگ چک باکس مقدار را وارد کنید ( فرض می کنیم میخواهیم فیلد تحصیلات در دیتیل با مقدار چک باکس فیلترشود پس مقدار تگ را دیپلم قرار می دهیم ) سپس به دیزاین فرم رفته و در رکورد سورس به کوئری بیلدر می رویم ( با زدن سه نقطه کنار باکس رکوردسورس) .
در قسمت Criteria فیلد Education تایپ میکنیم
Forms!Form3!Check2.Tag
حتما در رویداد باتن فیلتر منبع فرم را ریکوئری کنید
Me.Requery
زمانیکه فرم باز شود دیتیل فرم طبق مقداری که در پراپرتی تگ ( Tag ) چک باکس گذاشتید فیلتر میشود و امکان حذف فیلتر را ندارید. (مگر ساخت باتن دیگر و نوشتن Me.FilterOn=False )
اگر بخواهید زمان بازشدن فرم کل رکوردها نمایش داده شود و زمانیکه بر روی باتن فیلتر فشردیدآنوقت فیلترانجام شودباید دریک ستون دیگرفیلدEducation را انتخاب و توتالزرا Where کنید و سپس در کریتریای آن بنویسید
(iif(Forms!Form3!Check2=True,Forms!Form3!Check2.Tag,False
موردبالا بعد از برداشتن تیک دیتیل را خالی نمایش میدهد که برای اینکار از Is Null آن چک باکس و false در iff ذکرشده استفاده می کنیم.
فیلتر کردن تاریخ :
- دو تکست باکس به نام های Text12 و Text14در فرم دارید و می خواهید رکوردهای بین دو تاریخ درج شده در دو تکست باکس فیلترشود در همان کوئری بیلدر در شرط فیلد تاریخ می نویسید
Between Forms!Form3!Text12 And
Forms!Form3!Text14
*** Null معادل هیچ مقداری نیست جمع مقادیر با Null همان Null میشود پس برای فیلد رکوردی که Null است یا کنترلی که Null است باید صفر در نظرگرفته شود تا جواب جمع Null نشود و ارور دریافت نکنید !!!
اگر یکی از تکست باکس ها یا جفت خالی باشند چه اتفاقی خواهد افتاد به رفتار عملگرها مراجعه کنید ) ؟!!!
طبق داکیومنت اکسس بولین مقدار ندارد ولی برای فالز صفر و برای ترو هر عددی غیر از ترو می تواند باشد
Between True And Null=Null
Between Null And True=Null
Between Null And Null=Null
( یکسری از دوستان فقط بلدن کپی کنن !!! در عبارت بالا فاصله
رعایت شود )
نکته !!! اگر در تکست باکسها الگوی ورودی یا Input Mask استفاده کردید برای تاریخ حتما باید مثل Input Mask فیلد تاریخ باشد یعنی اگر در فیلد تاریخ جدول از 0 ;0000/00/00 استفادا کردید که اسلش ها هم درنظر گرفته میشود اگر Inpust Mask تکست باکس ها را فقط 0000/00/00 در نظر بگیرید چون مچ نمی شود خالی نمایش میدهد و یا اگر اینپوت ماسک شما در جدول بصورت 0000/00/00 ( که اسلش ها در نظر گرفته نمی شود ) باشد و در تکست باکس از اینپوت ماسک استفاده نکرده باشید و خودتان تاریخ را با اسلش تایپ کنید باز هم مچ نمیشود چون در جدول فرضا 13980120 ثبت شده ولی شما در تکست باکس 1398/01/20 وارد کرده اید . ( پس خالی بودن دیتیل فرم بدین معنیست که مچ نشده چه تاریخ مورد نظر در مقدار فیلد جدول نباشد یا اینکه الگوی شما با تکست باکس نخواند )
پس اول چک کنید که الگوها یکی باشند !!! بعد از تطبیق دادن اگر شما یکی از تکست باکس ها را خالی رها کنید زمانیکه باتن فیلتر را کلیک می کنید باز هم دیتیل را خالی نمایش می دهد برای اینکه اگر یکی از آنها خالی بود از حالت فیلتر خارج شود کافیست با آن آدرس تکست باکس عبارت Is Null را بکار ببرید ( بافاصله !!! ). اشتباه نکنید در محیط وی بی تابع IsNull وجود دارد.
Between (Forms!Form3!Text12 Or Forms!Form3!Text12 is Null) And
(Forms!Form3!Text14 Or Forms!Form3!Text14 is Null)
برای درک عبارت بالا بهتر است حتما عملکرد عملگرها را بدانیم
Boolean Operation
not
NULL
= NULL
NULL
or false
= NULL
NULL
or true
= true
NULL
or NULL
= NULL
NULL
and false
= false
NULL
and true
= NULL
NULL
and NULL
= NULL
The Microsoft Access IsNull function returns TRUE if the expression is a null value. Otherwise, it returns FALSE.
فرضا در Text12 هیچ مقداری وجود ندارد ( Null ) یعنی Null است و is Null برابر True ( چون در اینجا تکست 12 Null است پس True را بر می گرداند ) پس طبق بالا داریم
Null Or True=True
A | β | AND(&&) | OR(| |) | NOT(exclA) |
---|---|---|---|---|
FALSE | FALSE | FALSE | FALSE | TRUE |
FALSE | TRUE | FALSE | TRUE | TRUE |
TRUE | FALSE | FALSE | TRUE | FALSE |
TRUE | TRUE | TRUE | TRUE | FALSE |
When Visual Basic converts numeric data type values to Boolean
, 0 becomes False
and all other values become True
. When Visual Basic converts Boolean
values to numeric types, False
becomes 0 and True
becomes -1.
در مورد Between...And :
If expr, value1, or value2 is Null, Between...Andreturns a Null value.
برای شرط تاریخ میتوان با Iif شرطی نوشت که اگر تکست باکس شروع خالی بودبرای عملگر بزرگتر ( برای تکست باکس شروع ) First یا Min ( بهتر است استفاده شود ) فیلد تاریخ اعمال شود و برای عملگر کوچکتر ( برای تکست باکس خاتمه ) اگر تکست باکس خاتمه خالی بود Last یا Max فیلد تاریخ ( که بهتر است )
محتویات داخل داکیومنت ( Range )
Documents.Content
برگشت آبجکت رنج کاراکترهای شروع تا آخر
(Documents.Range(Start,End
Object در داکیومنت اکتیو ورد بسیاره وبه پاگراف ها ، بوک مارک ها و سل ها اعمال میشه و Range استارت و پایانی دارد فرضا اول پاراگراف ۲ تا پایان پاراگراف ۴
.(2)ActiveDocument.Range(ActiveDocument.paragraphs
(Range.Start,ActiveDocument.Paragraphs(4).Range.End
: Rang.Copy
ActiveDocument.Paragraphs(1).Range.Copy
"ActiveDocument.Content.InsertAfter "end of documen
برای اضافه کردن به انتهای پاراگراف باید به رنج ایجاد شده اعمال شود
1-Doc.Paragraphs(1).Range.Start,Doc.Paragraphs(1).Range.End
Set doc = ActiveDocument
_ =Set rngRange _ ,doc.Range(doc.Paragraphs(1).Start (doc.Paragraphs(1).End - 1
_ rngRange.InsertAfter " This is now the last sentence in paragraph one."
انتخاب پارگراف بولد کردن فونت : Range.Select
()Sub SelectParagraph
ActiveDocument.Paragraphs(1).Range.Select
Selection.Font.Bold = True
End Sub
درج تکست Selection.TypeTextدرج پارگراف جدید یا بلنک Selecttion.TypeParagrapg
Selection.Collapse Direction:=wdCollapseStart
برای درج تکست در فیلدهائی که در فرم تعبیه کردیم فرضا برای کپی کردن فیلد رکوردی از جدول یا کوئری اکسس
"ActiveDocument.FormFields("Text1").Result = "Don Funk
باز کردن داکیومنت
از رفرنس تیک Microsoft Word را بزنید و با کالکشن های آن کار کنید
"Documents.Open FileName:="C:\MyFolder\Sample.doc
آرگومانهای بعد از نام فایل که حتمیست بقیه آپشنال یا انتخابی هستند ولی یا باید عین عبارت با دونقطه و مساوی بیان شود یا هر کدام در جای خودش آورده شود مثل بالا
,expression.Open (FileName, ConfirmConversions
ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate,
Revert, WritePasswordDocument,
WritePasswordTemplate, Format,
Encoding, Visible, OpenConflictDocument,
(OpenAndRepair, DocumentDirection, NoEncodingDialog
برای ذخیره ی داکیومنت ( آرگومان ها آپشنال هستن )
_ , Documents.Save NoPrompt:=True OriginalFormat:=wdOriginalDocumentFormat
اگر قبلا Save شده باشد با SaveAs
مراحلی که باید طی شود
باز کردن pdf در محیط ورد WordApp.Documents.Open
کپی کردن محتویات ورد WordApp.ActiveDocument.Content.Copy
پیست در رنج اکسل WS.RANG("B4").COPY و WS.PASTESPECIAL
-روش مناسب برای تبادل دیتا بین Vba و ماکروها .
-TempVars کلا ۲۵۵ آیتم را ذخیره می کند اگر با Remove حذف نشود در حافظه باقی می ماند تا زمانیکه دیتابیس بسته شود( منظور اگر تعداد بیش از ۲۵۵ باشد چرا چون جایگزین نمیشود )
فرض کنید میخواهید نام یوزر را در زمان باز بودن دیتابیس در Vba یا ماکروها ( SetTempVars) استفاده کنید ، در فرم لاگین پس از معتبر بودن پسورد می توانید نام یوزر که در اینجا بنام User هست را در txtUser ذخیره کنید که در حافظه باقی بماند و در طول برنامه هر جائی که لازم بود فراخوانش کنید روش بصورت زیر است آن را Add می کنیم
TempVars.Add "txtUser",Me.User
برای حذف متغیر تخصیص شده به اسم txtUser کافیست از متد Remove بجای Add استفاده کنیم
فرض کنید فیلد جنسیت ( کمبوباکس شامل مرد و زن ) را در فرم میخواهید بصورت باتن های انتخابی در فریم نمایش دهید ، کاری که می بایست انجام دهید اینست که کنترل فریم از تب دیزاین و گروه کنترلز ( Controls ) را انتخاب کرده و به روی فرم بکشید و رها کنید اگر ویزارد یا همان عصای جادوئی فعال باشد از شما نام آیتم ها و بعد نوع باتن ( چک باکس یا رادیو باتن ) را میخواهد بعد از اتمام ( دستی هم میشود پراپرتی ها ی هر کدام را تغییر داد منظور کپشن باتن ها ) روی فریم در حالت دیزاین فرم کلیک کرده پنجره ی پراپرتی را باز بنمائید در تب Data پراپرتی ControlSource را نام فیلد جدول جنسیت قرار بدهید بعد از انجام می بینید که بعد از انتخاب در جدول بجای رکورد های مرد یا زن در آن فیلد آپشن ولیوی آن قرار گرفته .
درزمان باز کردن فرم ( سینگل !!!) و جابجاشدن در رکوردها اتومات جنسیت طبق چیزی که در آن رکورد درج شده در آن فریم نمایش داده خواهد شد . OptionValue
ListBox.Properties
: ListCount
شمارش ردیف های داخل لیست باکس
: ListIndex
ایندکس ردیف های لیست باکس که از صفر شروع میشود
: ItemData
گرفتن آیتم کلیک شده !!! با توجه به ایندکس آن
(ListBox.ItemData(Listbox.ListIndex
: (Selected(lRow
چک میکند آیا انتخاب شده یا خیر ، فرضا بخواهید ردیف موردنظر انتخاب شود ( lRow از صفر شروع می شود مهندسان عزیز!!!)
ListBox.Selected(4)=True
: ItemSelected
برای فعال کردن حالت چند انتخابی ردیف ها ی یک لیست باکس ، از پنجره ی پراپرتی خود کنترل ، پراپرتی MultiSelect را به حالت Simple یا Extended تنظیم بنمائید.
این پراپرتی خودش دو تا پراپرتی دارد به نام های Count و Item و متدی ندارد.
مثال برای شمارش آیتم های سلکت شده : (محدودیت ر دیف های ایجادشده حدودتقریبی ۶۴۰۰۰ ردیف )
Dim C As Long
۱-C=ListBox.ItemSelected.Count
برای گرفتن آیتم های سلکت شده هم میتوان توسط تابع For...Next و لوپ زدن در کانت آن که به متغیر C ارسال شده اقدام نمود ... گرفتن دیتای آیتم : (LISTBOX.ITEMDATA(LISTBOX.LISTINDEX که در پراپرتی مربوطه بدان اشاره گردید.
: (Column(Index,IRow
برای ارجاع به کالمن مشخص شده که هر دو از صفر شروع میشوند تاکانت Index یا IRow منهای یک
فرضا اگر لیست باکس شما چهارستونه باشد برای گرفتن دیتای ستون دوم و ردیف پنجم
(LISTBOX.COLUMN(1,4
: ColumnCount
برای شمارش کالمن های لیست باکس یا لیست باکس کمبو استفاده میشود ( کانت منهای یک !!! )
فرضا برای گرفتن دیتاهای کل کالمن ها در ردیف مورد نظر در کانت کالمن منهای یک لوپ ایجاد شده و طبق پراپرتی کالمن آیتم ها نمایش یا پرینت خواهد شد.
: ColumnOrder
برای تعیین ترتیب نمایش کالمن های دیتاشیت استفاده میشود فقط دیتا شیت !!! این پراپرتی زمانیکه جدول بازباشد اعمال نخواهدشد و باید بسته و دوباره بازشود تا اعمال گردد.
: BoundColumn
دیتای کالمنی که باید در جدول اعمال شود فرضا سه ستون دارید میخواهید اطلاعات کالمن ۳ و ردیف انتخاب شده در جدول ثبت شود باند را روی ۳ میگذارید که در حصر کالمن ۳ فقط باشد برای عدم نمایش کالمن های دیگر پراپرتی ColumnWidth است که میتوانید آنرا صفر کنید فرضا اگر ۳ ستون داشته باشید و فقط بخواهید ستون سوم را ببینید در پنجره ی پراپرتی لیست باکس و پراپرتی ColumnWidth تایپ کنید 1;0;0 .. یک منظور کالمن آخر ۱ اینچ باشد .
: ColumnHeads
برای نمایش هدر لیست باکس ( تیتر ، عنوان ستون ها فقط در یک ردیف ) در لیست باکس یا لیست باکس کمبو استفاده میشود
باید با CreateObject انجام شود
("CreateObject("Wia.DeviceManager
Properties
Deviceinfos Properties
Set DevMgr = New WIA.DeviceManager For ii = 1 To DevMgr.DeviceInfos().Count Debug.Print "DevMgr.DeviceInfos(" & ii & ").Properties!Name.Value = " & DevMgr.DeviceInfos(ii).Properties!Name.Value If DevMgr.DeviceInfos(ii).Properties!Name.Value = MyScanner Then Set DevInfo = DevMgr.DeviceInfos(ii) Next ii ' --- Set dev = DevInfo.Connect ' --- Set img = dev.Items(1).Transfer(ImageFormat)
تخصیص اقساط وام مشتری بمبلغ 3,800,000 بمدت 36 ماه در جدول LoanDetail ( جزئیات وام دریافتی توسط اشخاص )
105,555.555=36÷3,800,000
105555=36\3,800,000
باقیمانده ی تقسیم یا مود با فاصله !!! 3,800,000Mod36=20
105000=1000×(1000\(36\3,800,000))
555=1000×(1000\((36\3,800,000)))-(36\3,800,000)
125000=36×1-105000+20+555
3,675,000=35×2-105000
طبق عملیات بالا قسط اول میشود 125000 و قسط دوم تا 36میشود 105000 و بنابراین در جدول LOANDETAIL که شامل CUSTOMERID LOANID LOANNUM LOANDT AMOUNT هست طبق زیر اپند را انجام می دهیم فرم ورود اطلاعات ایجاد اقساط وام FRM_LOAN هست .
زمان ایجاد اقساط وقتی طبق آیدی مشتری و آیدی وام که در جدول واسط ایجاد شده در جدول LOANDETAIL رکوردی ثبت نشده و تابع DLOOKUP نال ولیو ( NULL ) را برمی گرداند نتیجتا قسمت دوم در تابع DLOOKUP که FALSE است اجرا شده و قسط اول 125000 اپند میشود و زمان اپند کردن قسط دوم به آخر چون رکورد ایجادشده و دیگر NULL نیست قسمت TRUE اجرا خواهد شد که همان 105000 می باشد اپند در بین حلقه ی FOR.... NEXT قرار می گیرد فرضا اگر کوئری اپند APP_LOANDETAIL باشد میشود :
DIM I AS INTEGER
FOR I=1 TO ME.PERIOD
DOCMD.SETWARNINGS FALSE
"DOCMD.OPENQUERY "APP_LOANDETAIL
DOCMD.SETWARNINGS TRUE
NEXT
اکسپرژن مربوط به اضاف کردن مبلغ هر قسط در جدول دیتیل اقساط ... محدودیت تعداد کاراکتر در اکسپرژن ، ۱۰۲۴ کاراکتر است .
(IIf ( expr , truepart , falsepart
)Iif
Dlookup("Amount","LoanDetail","CustomerId & LoanId=" &
(forms!loan!CustomerId & forms!loan!LoanId
,
(forms!loan!Amount\forms!loan!period)\1000)×1000))
,
(forms!loan!Amount\forms!loan!period)\1000)×1000))
forms!loan!period×((forms!loan!Amount\formd!loan!period)+
-(forms!loan!Amount\formd!loan!period)\1000)
forms!loan!Amount Mod forms!loan!period+
(
با پیش پرداخت 50,000
برای AddMonth بدون درنظر گرفتن کانتریا سال کبیسه کافیه توسط تابعی سال ماه و روز را گرفته و به ماه یک عدد اضافه کنیم در خط بعد اگر ماه از ۱۲ بزرگتر شد ماه یک میشود و سال یکی بدان اضافه خواهد شد روز هم همان در نظر گرفته میشود فقط تنها مشکل اینه که اگر فرضا سالی کبیسه نباشد و کسی ۳۰ بهمن وام گرفته باشد با توجه به تابع بالا قسط اول ۳۰ اسفند میشود درصورتیکه اسفندماه ۲۹ روز ه هست پس سعی کنید بازه ی وام بین ۱ تا ۲۹ آن ماه باشد حتی فرض کنید کسی وامی را ۳۱ شهریور گرفته باشد در اینصورت طبق روش بالا میتوانیم برای رفع این مشکل بگوئیم اگر ماه بزرگتر از ۶ شد و اگر روز بزرگتر از ۳۰ بود همان ۳۰را درنظر بگیرد
ویندوز یوزر Windows User کامپوننتی است که توابعی را بر ای ایجاد رابط کاربری User Interface فراهم میسازد فرضا ایجاد پنجره ی جدید یا تغییر استایل پنجره یا برداشتن منوهای سیستمی و ارسال مسیج ها به آن و ایجاد کنترل ها ... یا بعبارت دیگر اتصال به سایر اپلیکشن ها .
64Bit'
Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
لینکhttps://fararu.com/fa/news/401468/پاسخ-به-پرسشهای-متداول-در-مورد-رویت-هلال-ماه
طبق گفته ها که ماه بعد با توجه به هلال ماه مشخص خواهد شد تبدیل قمری دقیق نیست
آیا ماه رمضان همیشه ۲۹ روزه است؟
طول ماههای قمری در کشورهای اسلامی بر اساس معیارهای نجومی پیشبینی میشود و طول یک ماه در هر سال ارتباطی به سالهای دیگر ندارد؛ بنابراین طول ماه رمضان میتواند مانند هر ماه دیگری ۲۹ یا ۳۰ روز باشد
آیا اگر ماه شعبان ۳۰ روزه باشد، ماه بعد (رمضان) ۲۹ روزه خواهد بود؟
خیر. مدت طول هر ماه مستقل از ماه قبل است. محاسبات نشان میدهد ۳ ماه قمری متوالی میتوانند ۲۹ روزه و ۴ ماه قمری متوالی میتوانند ۳۰ روزه باشند.
چرا با اینکه مقارنه ماه و خورشید اتفاق افتاده، هنوز اول ماه اعلام نشده است؟
از نظر معیارهای تجربی، در بهترین وضعیت هم تا چندین ساعت بعد از مقارنه نیز امکان رویت هلال حتی با تلسکوپ وجود ندارد. ضمن آنکه مقارنه ماه و خورشید ملاک شرعی برای آغاز ماه قمری نیست.
آیا همیشه شروع ماه قمری (مثلا رمضان یا شوال) در ایران بعد از عربستان است؟
شروع ماه در هر نقطهای بستگی به مشخصههای نجومی در آن کشور و البته ملاک شرعی فقهای آنجا دارد؛ بنابراین ممکن است شروع ماه در ایران و عربستان یکی باشد (مثل ماه رمضان امسال)
متد (Device.ExecuteCommand(CommandID
برای گرفتن عکس توسط دوربین اول انتخاب Device با متد ShowSelectDevice و بعد ارسال کامند به آن دستگاه
: CommandID
wiaCommandTakePicture
ppResult = .ShowSelectDevice( _
[ ByVal DeviceType As WiaDeviceType ], _
[ ByVal AlwaysSelectDevice As VARIANT_BOOL ], _
[ ByVal CancelError As VARIANT_BOOL ] _
) As HRESULT
Boolean منظور استفاده از True یا False
: WiaDeviceType UnspecifiedDeviceType 0 ScannerDeviceType 1 CameraDeviceType 2 VideoDeviceType 3
CommonDialog Object
محتوی تمام متدهایی است که UI ( رابط کاربری یا User Interface ) را نشان میدهد و باید "WIA.CommonDialog" با CreateObject ساخته شود یا CommonDialog در فرم آورده شود.
Methods
ShowAcquireImage
نمایش یک یا چند دایالوگ باکس که یوزر را قادر سازد تا تصویر را از دستگاه مربوطع سازد بگیرد.
ShowAcquisitionWizard
ویزارد اسکنر و دوربین را فعال می کند ( نمایش )
ShowDeviceProperties
نمایش پراپرتی های دیالوگ باکس دستگاه یا Device مربوطه
ShowItemProperties
نمایش آیتم های دیالوگ باکس دستگاه یا Device مربوطه
باز شدن پنجره ی اسکنر
Dim Img
Dim CommonDialog1
Set CommonDialog1=CreateObject("Wia.CommonDialog
Set Img = CommonDialog1.ShowAcquire
(Img.SaveFile (Img
میشود لوپ زد و پراپرتی های مربوطه رو گرفت For Each Prp In
کپی در Word البته در خود Word نوشته شده مربوط به اکسس نیست
objImage.SaveFile strPath ' save into temporary file
' Insert in Word Document
Selection.InlineShapes.AddPicture
strPath
'Requires a reference to Microsoft Windows Image Acquisition Object Library
Dim Img 'As ImageFile _ )Set Img=CommonDialog1.ShowAcquireImage
_ ,UnspecifiedDeviceType
_ ,TextIntent
_ ,MaximizeQuality
( wiaFormatGIaf
(ScanDev=CommonDialog1.ShowSelectDevice(1,False,False
("Set img=CreateObject("Wia.ImageFile
(ScanDev.Items(1).Transfer(WiaFormatBMP
طبق مثال زیر البته در حالت دیزاین هم در ریبون در تب Order میشود Rearrange را انجام داد.
Me.Student_ID.ColumnOrder = 1
Me.Family_Name.ColumnOrder = 2
Me.Preferred_Name.ColumnOrder = 3
Start Module----
Set frm =Screen.ActiveDatasheet.Form
index=1
لوپ در داخل فیلدهای کوئری Start Loop '
index=index+1
End Loop '
End Module----
(Private Sub Id_DblClick(Cancel As Intege
طبق مثال زیر البته در حالت دیزاین هم در ریبون در تب Order میشود Rearrange را انجام داد.
Me.Student_ID.ColumnOrder = 1
Me.Family_Name.ColumnOrder = 2
Me.Preferred_Name.ColumnOrder = 3
(Set ctl = frm.Controls(fld.name
ctl.ColumnOrder = index
برای کپی کردن محتویات شی رکوردست (ADO یا DAO ) در گوشه ی بالائی سمت چپ رنج مشخص شده در شیت اکسل استفاده میشود
public int CopyFromRecordset (object Data, object MaxRows, object
MaxColumns);
که Data همان متغیر نسبت داده شده بعنوان رکوردست است ، MaxRows ماکزیمم ردیف هایی که باید داخل شیت کپی شود و MaxColumns ماکزیمم تعداد فیلدهایی که میخواهیم در شیت اکسل کپی شود.
فرضا
Dim Rs As RecordSet
Dim Sql As String
("Sql="Select * From Query1
(Set Rs=CurrentDb.OpenRecordset(Sql
درقسمت پائین اول باید آبجکت Excel.Application ساخته شود بعد اضافه کردن WorkBook به اپلیکیشن و استفاده از پراپرتی های مربوطه مثل Range یا Cell
Dim Wk As Object
Set Wk=XlObj.WorkBook.Add
Wk.Sheets(1).Range("A3").CopyFromRecordset Rs
برای کپی کردن فیلدها هم میشود در همان ماژول اگر جدول یا کوئری پراپرتی کپشن داشته باشد و فارسی آن فیلد را درآن ذخیره کرده باشیم با یک لوپ زدن داخل فیلدهای رکوردست (Rs.Fields ) به Cell مربوطه در آن شیت اکسل کپی کرد مثل
Dim Fld As Fields
.
("Wk.Sheets(1).Cells(2,i)=Fld.Properties("Caption
.
نمونه هائی از پراپرتی های مورد استفاده
xlsh.UsedRange.Borders.Weight = 2
xlApp.Application.Columns.AutoFit
xlApp.displayalerts = False
xlwk.saveas "D:\" & Me.Name & ".xlsx"
xlApp.Quit
Recordset.GetRows
از متد GetRows برای کپی کردن یک یا چند رکورد از رکوردست استفاده می شود و سریعترین راهیست که به یکباره میتوان آنها را گرفت و بعد آرایه ی دوبعدی ساخت ، خروجی تابع آرایه ی دو بعدیست البته طبق داکیومنت اکسس که اولی فیلد و دومی شماره ردیف است .
(varRecords(intField, intRecord
طبق تصویر پائین دومی Start و سومی شماره ی ردیف
است
(array= recordset.GetRows(Rows, Start, Field
(2)varValues = recSales.GetRows (intFieldCount = UBound(varValues, 1 (intRowCount = UBound(varValues, 2
گام بعدی ایجاد لوپ در RowCount و دوباره ایجاد لوپ در FieldCount و گرفتن دیتاهای رکورد
ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart
نوع آبجکت : ObjectType
acOutputQuery
acOutputTable
acOutputForm
acOutputReport
نام آبجکت : فرم کوئری فرم یا گزارش : ObjectName
فرمت خروجی : OutputFormat
خروجی جدول Employees به فرمت ( rtf ( Rich Text و True هم که بعد از ایجاد فایل rtf بنام Employee.rtf باعث نمایش آن در اپلیکیشن می شود .
_ , "DoCmd.OutputTo acOutputTable, "Employees
acFormatRTF, "Employee.rtf", True
مثال بعدی : خروجی کوئری به اکسل ۲۰۰۷ که فرمت xls هست و بعد نمایش آن .. در صورت خالی گذاشتن مسیر کامل فایل خود اکسس برای نام و مسیر آن سوال می کند.
_ ,"DoCmd.OutputTo acOutputQuery,"YourQueryName
acFormatXLS,,True
استفاده از ControlType Propert
در مثال زیر در کنترل های فرم لوپ زده میشود فقط مورد Lable که با acLabel مشخص شده و پراپرتی SpecialEffect و BorderStyle را عوض میکند ... کد را کپی نکنید اول خط به خط یاد بگیرید بعد مستفیذ شوید
مورد لیبل Case acLabel
اگر پراپرتی اسپشیال افکت برابر ثابت Shadow بود
If .SpecialEffect = acEffectShadow Then
اسپشیال افکت لیبلی که Shadow بود به نرمال تبدیل میشود
SpecialEffect = acEffectNormal
Constant | Control |
---|---|
acBoundObjectFrame | Bound object frame |
acCheckBox | Check box |
acComboBox | Combo box |
acCommandButton | Command button |
acCustomControl | ActiveX (custom) control |
acImage | Image |
acLabel | Label |
acLine | Line |
acListBox | List box |
acObjectFrame | Unbound object frame or chart |
acOptionButton | Option button |
acOptionGroup | Option group |
acPage | Page |
acPageBreak | Page break |
acRectangle | Rectangle |
acSubform | Subform/subreport |
acTabCtl | Tab |
acTextBox | Text box |
()Private Sub cmdCreate_ClickDim db As DAO.Database(Set db = CreateDatabase("Exercise.accdb", dbLangGeneralEnd Sub
برای اکسپورت از متد Docmd.TransferText استفاده می کنیم
DoCmd.TransferText acExportDelim,"Standard Output "External Report", "C:\Txtfiles\April.doc,"
مثال بالا جدول External Report از دیتابیس اکسس که با نام Standard Output با Docmd.RunSavedImporExport ذخیره شده است را به فایل April اکسپورت میکند با جداکننده.
البته مثل تصویر بالا حتما Import یا Export را بصورت قرار دادی مشخص کنید تا اشتباه نگیرید
acExportDelim | 2 | Export Delimited |
acExportFixed | 3 | Export Fixed Width |
acExportHTML | 8 | Export HTML |
acExportMerge | 4 | Export Microsot Word Merge |
acImportDelim | 0 | Import Delimited |
acImportFixed | 1 | Import Fixed Width |
acImportHTML | 7 | Import HTML |
acLinkDelim | 5 | Link Delimited |
acLinkFixed | 6 | Link Fixed Width |
acLinkHTML | 9 | Link HTML |