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

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

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

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

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

متد Application.DDEInitiate آغاز مبادله داده های پویا



از تابع DDEInitiate برای شروع ارتباط مبادله داده پویا با سایر برنامه ها استفاده می شود. این تابع یک کانال برای انتقال داده بین سرور DDE و برنامه کلاینت باز می نماید


expression.DDEInitiate (ApplicationTopic)


Application : یک عبارت رشته ای نمایانگر یک برنامه که می تواند در مکالمه DDE همکاری داشته باشد.معمولا این آرگومان نام یک فایل EXE است البته بدون ذکر پسوند فایل برای برنامه های بر پایه ویندوز مثل مایکروسافت اکسل


برای مثال ، اگر تمایل به انتقال داده از کاربرگ اکسل به پایگاه داده اکسس را دارید می توانید از این تابع برای باز کردن یک کانال بین دو برنامه استفاده کنید.در این مثال اکسس بعنوان برنامه کلاینت و اکسل بعنوان برنامه سرور عمل می کند.

در صورت ارتباط موفق ، این تابع یک مکالمه DDE با برنامه و عنوان مشخص شده توسط برنامه و آرگومان های topic برقرار کرده و مقدار عددی نوع LONG را بر می گرداند.این مقدار بازگشتی یک شماره کانال یونیک و واحدی را نشان می دهد که کانالی را که انتقال داده از طریق آن می تواند انجام شود را مشخص می کند. این شماره کانال متعاقباً با سایر توابع و عبارات DDE استفاده می شود.


Dim chanNum As Variant

شروع تبادل با تابع DDEInitiate ، آرگومان اول اسم فایل Exe و آرگومان دوم نام فایل اکسس 

chanNum = DDEInitiate("MSACCESS", "dde_test.mdb")

اجرای ماکروی یک با تابع DDEExecute

DDEExecute chanNum, "[Macro1]"

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

DDETerminate chanNum

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

expression.DDEExecute (ChanNumCommand)


فرض کنید در حال اجرا کردن Word هستید و می خواهید داده را از پایگاه داده اکسس خاصی درون سندی بریزید.مکالمه DDE با اکسس بوسیله باز کردن کانال DDE با تابع DDEInitiate و مشخص کردن نام فایل پایگاه داده اکسس بعنوان topic را می توانید شروع کنید. سپس داده را از آن پایگاه داده به word از بین این کانال انتقال دهید.مایکروسافت اکسس topic های زیرین را پشتیبانی می نماید : 

-System

-نام دیتابیس

-نام جدول

-نام کوئری

-عبارت Sql 

بعد از انتشار مکالمه DDE ، می توانید از عبارت DDEExecute برای ارسال فرمان از کلاینت به برنامه سرور استفاده کنید.زمان استفاده بعنوان سرور ، اکسس هر یک از فرامین معتبر زیر را تشخیص می دهد:

-نام ماکرو در پایگاه داده جاری

-هر action که شما در ویژوال بیسیک انجام می دهید با استفاده از یکی از متدهای شئ  Docmd.

-اکشن های OpenDatabase و CloseDatabase  ، که فقط برای عملیات های DDE استفاده می شوند.



تابع DDE : 

برای مثال می توانید از این تابع در ویژگی ControlSource کنترل تکست باکس برای مشاهده داده از یک سل مشخص شده داخل شیت اکسل استفاده نمائید

DDE(applicationtopicitem)

-آرگومان اول نام برنامه اجرایی با پسوند Exe است مثل Exel یا MSAccess طبق همان فرمتی که در مسیرش وجود دارد

-آرگومان دوم یا topic اغلب یک سند مثل Sheet است ( در اکسل ) یا فایل داده ای

-آرگومان سوم یا item یک عبارت رشته ای که نام آیتم داده تشخیص داده شده توسط اپلیکیشن است . بطور مثال اگر در حال درخواست داده از اکسل هستید item بایستی بصورت نشانگر ردیف و ستون باشد مثل "R1C1" یا نام محدوده ای از سل ها


-در کمبو باکس هم می توان از داده های ستونی از اکسل استفاده کرد ولی نمی توان درقسمت تکست باکس کمبو چیزی را اضافه نمود.

-در option group و checkbox هم مورد استفاده قرار می گیرد.


















from serial port

جای com1 یا com2 می تواند شماره ip باشد

Chan = DDEInitiate("WinWedge", "Com1") MyData = DDERequest(Chan, "Field(1)")

DDETerminate Chan












جدا کردن عدد از یک متن


48-57

1- لوپ زدن در طول متن که از چندین space تشکیل شده مثل :

For i=1 To Len(sText)

2-استفاده از تابع Mid 

Mid(String,Start,Length)

Var=Mid(sText,1,i)

3-اگر Ascii code کاراکتر بین 48 تا 57 بود آن کاراکتر ( از رشته )  در متغیری موقتا ذخیرشود و در خروجی آن ارقام کنار هم نمایش داده شود.

این کدهای اسکی را می توان در جلوگیری از تایپ حروف نیز بکار برد ( در رویدادی که در  تکست باس موجود است )

می توان برای راحتر شدن از تابع IsNumeric استفاده کرد که اگر کاراکتر عددی بود در متغیری ذخیره شود.


تابع ()Asc در اکسس در مقابل تابع() Chr است.برای برگرداندن مقدار ASCII اولین کاراکتر رشته مورد استفاده قرار می گیرد.



-از تابع Split می توان استفاده کرد

-از شی RegExp در Vba نیز می توان بهره برد با استفاد از ویژگی Pattern می توان صفر تا ۹ را مشخص نمود 

[pt] >> فقط داخل براکت 

[pt^] >> شامل داخل براکت نباشد

[a-z] >> شامل حروف کوچک a تا z باشد

d >> شامل digit یا رقم

D >> شامل digit یا رقم نباشد

.  >> تک کاراکتر

n\  یاnewline

r\ یا vbCr

s\ شامل space باشد 

و استفاده از مِتُد Execute در شئ Vba.RegExp

With objRegex 

برای اجرای تابع که تمام تطابق ها در رشته را شامل شود ویژگی Global به True می بایست تنظیم شود.

.Global = True 

'.Pattern = "[^\d]+" '[NOT digit]  
.Pattern = "[\D]+" '[NOT digit] 

کاراکترهایی که ارقام نیستند را با Null جایگزین می کند 

getNumbersInString = .Replace(strIn, vbNullString) 

End With


 در زیر ویژگی Pattern عبارت A.C است اون نقطه طبق چیزی که بالا گفتیم یعنی تک کاراکتر و پس لوپ زیر تمام عباراتی که شامل سه کارکتر A تا C با داشتن یک تک کاراکتر وسط نامعلوم است را لیست می کند یعنی ABC و ADC و AJC

.Pattern = "A.C"
.Global = True
.IgnoreCase = True
stringOne = "ABC-A1289C-ADC-A1289C-AJC"
Set theMatches = regexOne.Execute(stringOne)
For Each Match In theMatches

Debug.Print Match.Value

Next

برای جدا کردن email ها :
w\ هرچیزی که شامل حرف و رقم باشد
Pattern: [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}
داخل براکت اولی : شامل حرف یا عدد ، نقطه یا خط ربط
بعد @
داخل براکت دومی : شامل حروف بزرگ و کوچک و ارقام
بعد دات( dot)
داخل براکت سوم : شامل حروف کوچک یا بزرگ انگلیسی 

پس ملاحظه نمودید که چندین روش برای استخراج متن مورد نظر در یک رشته وجود دارد








لایحه جدید قوه قضائیه به مجلس ( خرداد ۱۴۰۲ ) که موجبات مخالفت محجبه ها را فراهم کرد :

هیچ‌کس حق ندارد تحت عنوان امر به معروف و یا نهی از منکر نسبت به بانوانی که حجاب شرعی را رعایت نکرده اند مرتکب اعمال مجرمانه از قبیل توهین، افتراء، تهدید و یا ضرب و جرح و یا نقض حریم خصوصی آنان شوند و در صورت اقدام به مجازات مقرر در قانون محکوم خواهد شد»



















کنترل اعتبار IBAN یا شماره حساب بانکی بین المللی




Example (fictitious United Kingdom bank,2 sort code 12-34-56, account number 98765432):

IBAN :


GB82 WEST 1234 5698 7654 32
انتقال ۴ کاراکتر اول به انتها

W E S T12345698765432 G B82
تبدیل حروف به ارقام ( برای A تا Z شروع از 10 و بهمین ترتیب )


3214282912345698765432161182 Mod 97=1


 

A=10,B=11,C=12,D=13,E=14,F=15,G=16


In this example, the  algorithm for D mod 97 will be applied to D = 3214282912345698765432161182. (The digits are colour-coded to aid the description below.) If the result is one, the IBAN corresponding to D passes the check digit test.

1-Construct N from the first 9 digits of D
N = 321428291
2-Calculate N mod 97 = 70
3-Construct a new 9-digit N from the above result (step 2) followed by the next 7 digits of D.
N = 702345698
4-Calculate N mod 97 = 29
5-Construct a new 9-digit N from the above result (step 4) followed by the next 7 digits of D.
N = 297654321
6-Calculate N mod 97 = 24
7-Construct a new N from the above result (step 6) followed by the remaining 5 digits of D.
N = 2461182
8-Calculate N mod 97 = 1
From step 8, the final result is D mod 97 = 1 and the IBAN has passed this check digit test.








در چک کردن صحَّت شماره حساب ، خود فرد مسئول است و اشتباه بودن حساب شخص ، در سایت خود بانک مشخص خواهد شد نه با الگوریتم