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

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

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

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

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

عبارت Put و Get در VBA



Writes data from a variable to a disk file.


نوشتن داده از یک متغیر یه یک فایل 


نوشتاری عبارت Put : 


Put [ # ] filenumber, [ recnumber ], varname


 طبق نوشتار بالا این عبارت سه قسمت دارد که شماره فایل ( 1 تا 255 ) و نام متغیر ضروری هستند و فقط شماره رکورد Optional یا می تواند خالی رها شود.


دیتا نوشته شده با Put معمولا با Get خوانده می شود


 رکورد یا بایت اول در یک فایل در موقعیت 1  ، رکورد یا بایت دوم در پوزیشن 2 و .... است . اگر recnumber را نادیده بگیرید( omit )  ، رکورد یا بایت بعدی بعد از آخرین عبارت یا دستور Get یا Put ، یا با آخرین تابع Seek اشاره شده  ، نوشته می شود. باید در جداکننده کاما قرار گیرند مثال : 

Put #1,,FileBuffer


برای فایل هایی که در حالت تصادفی یا Random Mode باز ( Open ) می شوند قوائد زیر اعمال می گردد : 

اگر طول دیتای در حال نوشتن کمتر از طول مشخص شده در عبارت Len دستور Open باشد ، Put رکوردهای بعدی را روی مرزهای طول رکورد می نویسد فضای بین پایان رکورد و ابتدای رکورد بعدی با محتویات موجود در بافر پر می شود. از آنجاییکه مقدار data padding را نمی توان با قطعیت پیدا کرد ، بطور کلی ایده خوبی است که طول رکورد با طول داده های نوشته شده مطابقت داشته باشد.اگر طول داده های نوشته شده بیشتر ازطول مشخص شده در عبارت Len دستور Open باشد ، خطائی رخ می دهد. اگر متغیری که نوشته می شود یک رشته بت طول متغیر باشد ، Put یک توصیفگر 2 بایتی می نویسد که شامل طول رشته و سپس متغیر است . طول رکورد مشخص شده توسط Len در دستور Open باید حداقل 2 بایت بیشتر از طول واقعی رشته باشد.... هر کاراکتر یک بایت است ( شامل ۷ یا ۸ بیت ).

 اگرمتغیری ( Variable ) که نوشته می شود یک Variant از نوع عددی باشد ( وقتی بعنوان واریانت مشخص می کنید تمام دیتا تایپ ها راشامل میشود حتی یک Variant نال هم می تواند باشد ولی آبجکت خیر )  Put  دو بایت می نویسد ( هرکاراکتر یک بایت )  که VarType را مشخص میکند و سپس متغیر را می نویسد. بعنوان مثال هنگام نوشتن یک Variant از VarType 3 دستور Put شش بایت می نویسد : دو بایت که با آن متغیر شناسایی می شود و  چهار بایت حاوی داده ( Long ) . طول رکورد مشخص شده توسط Len دستور Open باید حداقل دو بایت بیشتر از تعداد واقعی بایت های مورد نیاز برای ذخیره متغیر باشد.

اگر متغیری که نوشته می شود یک Variant از VarType 8 یا String  باشد ، Put دو بایت می نویسد که VarType را مشخص میکند ، دو بایت که طول رشته را مشخص میکند و سپس دیتا رشته ای را می نویسد. طول رکورد مشخص شده در Len دستور Open باید حداقل چهار بایت بیشتر از طول واقعی رشته باشد. ( VarType یا Variable Type که یک تابع است برای فهمیدن نوع داده متغیر )


برای فایل های باز شده در حالت باینری مثل اتصال به دستگاه از طریق USB ( باز کردن پورت مثل COM1 تا COMn) ، تمام قوائد Random اعمال می شود جز :

بند Len در دستور یا عبارت Open هیچ تاثیری ندارد.Put تمام متغیرها را بطور پیوسته روی دیسک می نویسد بدون Padding بین رکوردها. برای هر آرایه ای غیر از آرایه در یک نوع user-defined ( توسط کاربر مشخص شده ) Put فقط دیتا را می نویسد . هیچ توصیفی نوشته نمی شود. Put رشته هایی با طول-متغیر که جزئی از انواع user-defined نیست را بدون 2 بایت طول توصیفگر می نویسد. تعداد بایت های نوشته شده برابر تعداد کاراکترها در رشته است . برای مثال عبارتهای زیر 10 بایت به فایل شماره یک می نویسد.

VarString$ = String$(10," ")

Put #1,,VarString$ 

  • می توان از دستورات  AT COMMAND در PUT برای ارسال به PORT استفاده کرد






Get [ # ] filenumber, [ recnumber ], varname


Reads data from an open disk file into a variable.

خواندن دیتا از یک فایل باز به یک متغیر


VarString = String(10," ")
Get #1,,VarString 


عبارت # Input برای خواندن دیتا :
varlistRequired. Comma-delimited list of variables that are assigned values read from the file—can't be an array or object variable. However, variables that describe an element of an array or user-defined type may be used.

شامل دو پارت است اولی نام فایل معتبر و دومی فهرست متغیرها که با کاما جدا می شوند( نمی تواند یک متغیر آرایه یا آبجکت باشد) البته متغیرهایی که اجزا یک آرایه یا یک نوع که توسط کاربر تعیین شده را توصیف میکند می تواند استفاده شود.


مثال زیر از عبارت # Input برای خواندن داده ها از یک فایل به دو متغیر استفاده می کند.این مثال فرض میکند  که TESTFILE یا فایل با چند خط داده است که با استفاده از عبارت # Write روی آن نوشته شده است . یعنی هر خط شامل یک رشته داخل کوتیشن ها و یک عدد است که با کاما از هم جدا شده اند.بعنوان مثال 234 , "Hello" .

'تعریف متغیر
Dim MyString, MyNumber
'باز کردن فایل برای گرفتن ورودی
Open "TESTFILE" For Input As #1 
'لوپ زدن تا انتهای فایل 
Do While Not EOF(1)
'خواندن داده در دو متغیر
Input #1, MyString, MyNumber 
'نمایش در محیط وی بی،  کنترل جی را بزنید
Debug.Print MyString, MyNumber 
'بستن فایل
Loop Close #1


مثالی دیگر از کاربرد دستور Put برای نوشتن در حالت Binary و  دستور input برای دریافت 

Open File in Binary Mode :
cmnd$ = cmnd$ + Chr(13)
Put #1, , cmnd$
answer = ""
char = Input(1, #1) 'get first char
While (char <> Chr(13))
DoEvents
If (char > Chr(31)) Then
answer = answer + char
Else
'Do what ever you like
End If
char = Input(1, #1) 'get the next character
Wend
Close #1
Cells(1, 1) = answer

کامند بالا تست نشده ولی به احتمال زیاد درست عمل میکند.


برای گرفتن دسیمال یونیکدها از AscW استفاده کنید و بعد به هگزا تبدیل کنید . تابع Oct هم که دسیمال را به اکتال می دهد. اگر Vba را تایپ کنید و بعد نقطه را وارد کنید لیست توابع را خواهید دید اگر زمانی اسم تابع فراموش شد کمکی به شما خواهد بود.

لطفا در نظر سنجی شرکت کنید











نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد