View Full Version : آموزش: آموزش اجرای کد های C# .Net در اکسس
AbbasSediqi
چهارشنبه 15 شهریور 1396, 02:11 صبح
با سلام خدمت همه دوستان و اساتید
روراست چند وقتیه که خودم برای یکسری کد ها در اکسس از سی شارپ استفاده میکنم
خواستم عید قربان به عنوان عیدی قرار بدم و حالا نشد ( حالا دوستان عیدی حساب کنن :چشمک: )
ولی امروز برای دوستان قرار میدم شاید کمکی باشی برای بهتر شدن کار هاشون
یا حق
AbbasSediqi
چهارشنبه 15 شهریور 1396, 02:39 صبح
این مطلب رو فقط در اینجا عنوان کردم و برای اولین باره که این کار انجام میشه
کپی برداری با ذکر منبع بلا مانع می باشد
خوب میگم حالا ....
اول از همه که بسیار مهمه از ضمیمه dll رو که ساختم دانلود کنید
نکات بسیار مهم هستند
اگر ویندوز شما 64 بیتی
باید هم در C:\Windows\System32
و هم در C:\Windows\SysWOW64
اگر 32 بیتی
فقط در C:\Windows\System32
کپی بفرمایید
نکته بعدی
برای اینکار حتما باید netFrameWork 4 رو نصب داشته باشد
پس رو ویندوز XP نصب نمیشه
بعد باید CMD رو در حالت Administrator باز کنید
در ترمینال ویندوز یا همون CMD عبارت زیر رو تایپ کنید
cd "C:\Windows\Microsoft.NET\Framework\v4.0.30319"
وبعد کلید Enter رو بزنید
و بعد دستور زیر رو وارد کنید و Enter رو بزنید
regasm DN.dll /tlb:DN.tbl
اگر درست انجام داده باشد باید عبارت زیر رو ببینید
C:\Windows\Microsoft.NET\Framework\v4.0.30319>regasm DN.dll /tlb:DN.tbl
Microsoft .NET Framework Assembly Registration Utility version 4.6.1586.0
for Microsoft .NET Framework version 4.6.1586.0
Copyright (C) Microsoft Corporation. All rights reserved.
Types registered successfully
Assembly exported to 'C:\Windows\SYSTEM32\DN.tbl', and the type library was registered successfully
حالا با موفقیت DLL رو نصب کردید
حالا به سراغ اکسس بروید
از منوی Tools بر روی References کلیک کنید
حالا درون لیست به دنبال DN بگردید و بعد تیک رو بزنید و OK کنید
حالا برای اجرا
به شکل زیر عمل کنید
Dim CSharpCode As DN.DotNet
Set CSharpCode = New DN.DotNet
Dim Command As String
خوب این قسمت مهمه
در دستورات C# هرجا که به " برخورد کردید باید از این روش استفاده کنید
مثال
دستور C#
string cName = "Rick" ;
باید اینطوری بشه
"string cName = " & """" & "Rick" & """" & ";"
خوب برای اینکه سطر ها رو هم رعایت کنید
مثال
کد C#
string cName = "Rick" ;
MessageBox.Show("Hello World" + cName);
return (object) DateTime.Now;
تبدیل شده
"string cName = " & """" & "Rick" & """" & ";" & _
"MessageBox.Show(" & """" & "Hello World" & """" & " + cName);" & _
"return (object) DateTime.Now;"
و در آخر هم این دستور
CSharpCode.ExcutCSharpDotNetCode(Command)
در صورت استقبال برای VB.NET رو هم براتون قرار میدم
البته در این روش فعلا جلوی اضافه کردن رفرنس رو گرفتم
اگر استقبال بشه با قابلیت رفنس به همراه آموزشش رو قرار میدم
امید وارم به کارتون بیاد
فایل نمونه هم پیوست شده
سوالی بود در خدمتم
یا حق
AbbasSediqi
چهارشنبه 15 شهریور 1396, 03:09 صبح
امیدوارم اساتید هم به این تاپیک نگاهی کنند و نظر بدن
جناب بهرامی و پیروز مهر و امیری و امیر زاده و...
atf_1379
چهارشنبه 15 شهریور 1396, 06:48 صبح
سلام جناب آقای صدیقی !
جسارتاً این آموزش (آموزش اجرای کد های C# .Net در اکسس) چه کاربردی در اکسس دارد و یا به عبارتی چه امتیازی برای اکسس ایجاد می کند ؟
AbbasSediqi
چهارشنبه 15 شهریور 1396, 21:22 عصر
سلام جناب آقای صدیقی !
جسارتاً این آموزش (آموزش اجرای کد های C# .Net در اکسس) چه کاربردی در اکسس دارد و یا به عبارتی چه امتیازی برای اکسس ایجاد می کند ؟
لود کردن اکسس با C# .NET
Access.Application oAccess = null;
// Start a new instance of Access for Automation:
oAccess = new Access.ApplicationClass();
// Open a database in exclusive mode:
oAccess.OpenCurrentDatabase(
"c:\\mydb.mdb", //filepath
true //Exclusive
);
Print or Preview an Access ReportTo preview or to print an Access report, you call the OpenReport method of the DoCmd object. When you call OpenReport, one of the arguments that you pass determines whether the report is previewed on the screen, or whether it is sent to the printer:
// Preview a report named Sales:
oAccess.DoCmd.OpenReport(
"Sales", //ReportName
Access.AcView.acViewPreview, //View
System.Reflection.Missing.Value, //FilterName
System.Reflection.Missing.Value //WhereCondition
);
// Print a report named Sales:
oAccess.DoCmd.OpenReport(
"Sales", //ReportName
Access.AcView.acViewNormal, //View
System.Reflection.Missing.Value, //FilterName
System.Reflection.Missing.Value //WhereCondition
);
Notice that the View argument determines whether the report is displayed in Access or whether it is sent to the printer. The WhereCondition argument can limit the report's recordset, if you use a valid SQL WHERE clause (without the word WHERE.) Notice that you can use System.Reflection.Missing.Value to skip any object parameters that are optional.
If you are previewing a report, be sure to set the Visible property of the Application object so that Access is visible on the screen. In this way, the user can view the report in the Access window.
There is another way to print a report or other objects in the database. Use the PrintOut method of the DoCmdobject. In this example, you select a report named Employees in the Database window, and then you call PrintOutto print the selected object. The PrintOut method allows you to provide arguments that correspond to the Print dialog box in Access:
// Select the Employees report in the database window:
oAccess.DoCmd.SelectObject(
Access.AcObjectType.acReport, //ObjectType
"Employees", //ObjectName
true //InDatabaseWindow
);
// Print 2 copies of the selected object:
oAccess.DoCmd.PrintOut(
Access.AcPrintRange.acPrintAll, //PrintRange
System.Reflection.Missing.Value, //PageFrom
System.Reflection.Missing.Value, //PageTo
Access.AcPrintQuality.acHigh, //PrintQuality
2, //Copies
false //CollateCopies
);
Or, in some cases, you may want to use both the OpenReport and the PrintOut methods to print a report. Suppose you want to print multiple copies of the Employees report but only for a specific employee. This example first uses OpenReport to open the Employees report in preview mode, using the WhereCondition argument to limit the records to a specific employee. Then, PrintOut is used to print multiple copies of the active object:
// Open the report in preview mode using a WhereCondition:
oAccess.DoCmd.OpenReport(
"Employees", //ReportName
Access.AcView.acViewPreview, //View
System.Reflection.Missing.Value, //FilterName
"[EmployeeID]=1" //WhereCondition
);
// Print 2 copies of the active object:
oAccess.DoCmd.PrintOut(
Access.AcPrintRange.acPrintAll, //PrintRange
System.Reflection.Missing.Value, //PageFrom
System.Reflection.Missing.Value, //PageTo
Access.AcPrintQuality.acHigh, //PrintQuality
2, //Copies
false //CollateCopies
);
// Close the report preview window:
oAccess.DoCmd.Close(
Access.AcObjectType.acReport, //ObjectType
"Employees", //ObjectName
Access.AcCloseSave.acSaveNo //Save
);
Show and Edit an Access FormVisual C# .NET has very powerful form capabilities. However, there may be times when you want the user to view a form that was previously developed in Access. Or, you may have a form in your Access database that provides criteria for a query or report, and you must open that form before you can preview or print the report. To open and show an Access form, you call the OpenForm method of the DoCmd object:
// Show a form named Employees:
oAccess.DoCmd.OpenForm(
"Employees", //FormName
Access.AcFormView.acNormal, //View
System.Reflection.Missing.Value, //FilterName
System.Reflection.Missing.Value, //WhereCondition
Access.AcFormOpenDataMode.acFormPropertySettings, //DataMode
Access.AcWindowMode.acWindowNormal, //WindowMode
System.Reflection.Missing.Value //OpenArgs
);
باز کردن فایل دارای پسورد
Access Security Dialog BoxesWhen you automate Access, you may be prompted to enter a user name or a password, or both, when you try to open a database. If the user enters the wrong information, an error will occur in your code. There may be times when you want to avoid these dialog boxes and instead to programmatically provide the user name and password so that your Automation code runs uninterrupted.
There are two types of security in Microsoft Access: password-protected databases and user-level security through a workgroup file (System.mdw). If you are trying to open a database that is password protected, you will receive a dialog box prompting for the database password. User-level security is different from a password-protected database. When user-level security is activated, Access displays a logon dialog box prompting for both a user name and password before the user can open any database in Access. For more information about Access security and the workgroup information file, click the article number below to view the article in the Microsoft Knowledge Base:
305542 (https://support.microsoft.com/en-us/help/305542)Understanding the role of workgroup information files in Access security
Avoiding Database Password Dialog BoxesIf you are opening a database that has been protected with a password, you can avoid the dialog box by providing the password to the OpenCurrentDatabase method
// Open a password-protected database in shared mode:
// Note: The bstrPassword argument is case-sensitive
oAccess.OpenCurrentDatabase(
"c:\\mydb.mdb", //filepath
false, //Exclusive
"MyPassword" //bstrPassword
);
Here is an example, where oAccess has been previously set to an instance of Access that does not have a database open. This code provides the password to the database to avoid a dialog box:
string sDBPassword = "MyPassword"; //database password
DAO._DBEngine oDBEngine = oAccess.DBEngine;
DAO.Database oDB = oDBEngine.OpenDatabase("c:\\mydb.mdb",
false, false, ";PWD=" + sDBPassword);
oAccess.OpenCurrentDatabase("c:\\mydb.mdb", false);
oDB.Close();
System.Runtime.InteropServices.Marshal.ReleaseComO bject(oDB);
oDB = null;
System.Runtime.InteropServices.Marshal.ReleaseComO bject(oDBEngine);
oDBEngine = null;
و منبع
https://support.microsoft.com/en-us/help/317114/how-to-automate-microsoft-access-by-using-visual-c
www.pc3enter.tk
چهارشنبه 22 شهریور 1396, 11:57 صبح
هوووووووو وه حالا چه دردیه
این همه پدر خودمون در بیاریم که یک تیکه کد C شارپ رو تو اکسل اجرا کنیم . که چی؟
داخل خود اکسل از ویژوال بیسیک پشتیبانی میکنه هم خیلی راحتتر و سبکتره و هم Dll نمیخواد که جَخ تازه بیایی ریجسترشون هم بکنی.
کدی در c شارپ یک ماه طول میکشه بنویسی با ویبیش میتونی تو هفته بنویسی.
(والا)
AbbasSediqi
چهارشنبه 22 شهریور 1396, 12:36 عصر
هوووووووو وه حالا چه دردیه
این همه پدر خودمون در بیاریم که یک تیکه کد C شارپ رو تو اکسل اجرا کنیم . که چی؟
داخل خود اکسل از ویژوال بیسیک پشتیبانی میکنه هم خیلی راحتتر و سبکتره و هم Dll نمیخواد که جَخ تازه بیایی ریجسترشون هم بکنی.
کدی در c شارپ یک ماه طول میکشه بنویسی با ویبیش میتونی تو هفته بنویسی.
(والا)
دوست گرامی این برای اجرای رفرنس هایی که در vb6 و یا vba
قابلیت اجرا نداره قرار داده شده
یا حق
atf_1379
پنج شنبه 23 شهریور 1396, 15:10 عصر
هوووووووو وه حالا چه دردیه
این همه پدر خودمون در بیاریم که یک تیکه کد C شارپ رو تو اکسل اجرا کنیم . که چی؟
داخل خود اکسل از ویژوال بیسیک پشتیبانی میکنه هم خیلی راحتتر و سبکتره و هم Dll نمیخواد که جَخ تازه بیایی ریجسترشون هم بکنی.
کدی در c شارپ یک ماه طول میکشه بنویسی با ویبیش میتونی تو هفته بنویسی.
(والا)
دوست گرامی این برای اجرای رفرنس هایی که در vb6 و یا vba
قابلیت اجرا نداره قرار داده شده
یا حق
سلام به همه
فکر کنم منظور جناب www.pc3enter.tk (http://www.pc3enter.tk) عزیز از کلمه اکسل همان اکسس باشد ، چون اینجا تالار اکسس است و عمدتاً در مورد اکسس بحث میشود .
و اما بنده هم که خیلی در برنامه نویسی حرفه ای نیستم یک جورائی نظر جناب www.pc3enter.tk (http://www.pc3enter.tk) تائید می کنم چرا که در برنامه نویسی تحت اکسس به تنها چیزی که شاید ضرورت داشته باشد نیاز پیدا کنیم ایجاد یک فایل لودر برای اجرای اکسس ، آن هم برای اجرای یک فایل اکسس پسورد دار است و گرنه فایل اکسسی که بدون پسورد است برای اجرای آن نیاز به فایل لودر وجود ندارد . و بعد هم ضرورتی وجود ندارد که خارج از محیط اکسس فرم یا گزارش خاصی اجرا شود چون با اجرای اکسس این عملیات در داخل محیط اکسس قابل اجرا است . البته به توجه به تاپیک های که در این تالار ایجاد شده به نظر میرسد منظور جناب AbbasSediqi (http://barnamenevis.org/member.php?305172-AbbasSediqi) از استفاده از کدهای سی شارپ این باشد که کرک رمز عبوری که برای فایل اکسس در فایل لودر اجرائی وارد شده مشکلتر از کرک رمز عبور در فایل لودر نوشته شده با وی بی باشد .
تا جائی که من پرس و جو کردم و نظر دوستان حرفه ای را جویا شد در همان محیط وی بی هم اگر رمز عبور را قدری حرفه ای تر وارد کنیم کرک نمودن آن به این راحتی هم نیست .
موفق باشین
AbbasSediqi
جمعه 24 شهریور 1396, 01:24 صبح
سلام به همه
فکر کنم منظور جناب www.pc3enter.tk (http://www.pc3enter.tk/) عزیز از کلمه اکسل همان اکسس باشد ، چون اینجا تالار اکسس است و عمدتاً در مورد اکسس بحث میشود .
و اما بنده هم که خیلی در برنامه نویسی حرفه ای نیستم یک جورائی نظر جناب www.pc3enter.tk (http://www.pc3enter.tk/) تائید می کنم چرا که در برنامه نویسی تحت اکسس به تنها چیزی که شاید ضرورت داشته باشد نیاز پیدا کنیم ایجاد یک فایل لودر برای اجرای اکسس ، آن هم برای اجرای یک فایل اکسس پسورد دار است و گرنه فایل اکسسی که بدون پسورد است برای اجرای آن نیاز به فایل لودر وجود ندارد . و بعد هم ضرورتی وجود ندارد که خارج از محیط اکسس فرم یا گزارش خاصی اجرا شود چون با اجرای اکسس این عملیات در داخل محیط اکسس قابل اجرا است . البته به توجه به تاپیک های که در این تالار ایجاد شده به نظر میرسد منظور جناب AbbasSediqi (http://barnamenevis.org/member.php?305172-AbbasSediqi) از استفاده از کدهای سی شارپ این باشد که کرک رمز عبوری که برای فایل اکسس در فایل لودر اجرائی وارد شده مشکلتر از کرک رمز عبور در فایل لودر نوشته شده با وی بی باشد .
تا جائی که من پرس و جو کردم و نظر دوستان حرفه ای را جویا شد در همان محیط وی بی هم اگر رمز عبور را قدری حرفه ای تر وارد کنیم کرک نمودن آن به این راحتی هم نیست .
موفق باشین
با سلام دوباره
با نگاه کردن به اولین تاپیک
با سلام خدمت همه دوستان و اساتید
روراست چند وقتیه که خودم برای یکسری کد ها در اکسس از سی شارپ استفاده میکنم
و
دوست گرامی این برای اجرای رفرنس هایی که در vb6 و یا vba
قابلیت اجرا نداره قرار داده شده
یا حق
عرض کردم بیشتر به منظور رفرنس هایی که در اکسس قابلیت اجرا ندارن
مثال
از سایت مایکروسافت
لیست dll , exe هایی که در vba و یا vb6 ساپورت نمیشن
https://docs.microsoft.com/en-us/visualstudio/vb6/vb6-support
Unsupported runtime files
anibtn32.ocx
spin32.ocx
rpcltscm.dll
rdocurs.dll
graph32.ocx
gauge32.ocx
rpcmqcl.dll
vbar332.dll
keysta32.ocx
gswdll32.dll
rpcmqsvr.dll
visdata.exe
autmgr32.exe
ciscnfg.exe
rpcss.exe
vsdbflex.srg
autprx32.dll
olecnv32.dll
dbmsshrn.dll
threed32.ocx
racmgr32.exe
rpcltc1.dll
dbmssocn.dll
MSWLess.ocx
racreg32.dll
rpcltc5.dll
windbver.exe
tlbinf32.dll
grid32.ocx
rpcltccm.dll
msderun.dll
triedit.dll
msoutl32.ocx
rpclts5.dll
odkob32.dll
مثال triedit.dll
در wikipedia
https://en.wikipedia.org/wiki/DHTMLEdit
DHTMLEditFrom Wikipedia, the free encyclopedia
DHTMLEdit is an ActiveX (https://en.wikipedia.org/wiki/ActiveX) control for Microsoft Internet Explorer (https://en.wikipedia.org/wiki/Internet_Explorer) 5 and later. It allows Web authors and application developers to add WYSIWYG (https://en.wikipedia.org/wiki/WYSIWYG) DHTML (https://en.wikipedia.org/wiki/DHTML) editing capabilities to their Web sites and applications. The editing component uses Microsoft's Component Object Model (https://en.wikipedia.org/wiki/Component_Object_Model) (COM) technology to provide access to editing services such as basic HTML formatting, tables, undo and redo, and absolute positioning.
Because of several security issues with this ActiveX control, Microsoft decided to discontinue shipping it with Windows Vista (https://en.wikipedia.org/wiki/Windows_Vista). Also, Internet Explorer has continued to evolve, incorporating WYSIWYG editing features of its own in Internet Explorer 5.5 and Internet Explorer 6. The control was present in the Beta 1 version of Windows Vista, but is absent in subsequent Windows releases.
However, because several programs and websites require this control to function correctly, it is still available as a separate download from Microsoft Download Center. More information can be found here (http://msdn2.microsoft.com/EN-US/library/aa663363.aspx).
در vba و یا vb6 قابلیت استفاده نداره
امیدوارم توضیحم کامل باشه
یا حق
AbbasSediqi
جمعه 24 شهریور 1396, 01:28 صبح
سلام به همه
فکر کنم منظور جناب www.pc3enter.tk (http://www.pc3enter.tk) عزیز از کلمه اکسل همان اکسس باشد ، چون اینجا تالار اکسس است و عمدتاً در مورد اکسس بحث میشود .
و اما بنده هم که خیلی در برنامه نویسی حرفه ای نیستم یک جورائی نظر جناب www.pc3enter.tk (http://www.pc3enter.tk) تائید می کنم چرا که در برنامه نویسی تحت اکسس به تنها چیزی که شاید ضرورت داشته باشد نیاز پیدا کنیم ایجاد یک فایل لودر برای اجرای اکسس ، آن هم برای اجرای یک فایل اکسس پسورد دار است و گرنه فایل اکسسی که بدون پسورد است برای اجرای آن نیاز به فایل لودر وجود ندارد . و بعد هم ضرورتی وجود ندارد که خارج از محیط اکسس فرم یا گزارش خاصی اجرا شود چون با اجرای اکسس این عملیات در داخل محیط اکسس قابل اجرا است . البته به توجه به تاپیک های که در این تالار ایجاد شده به نظر میرسد منظور جناب AbbasSediqi (http://barnamenevis.org/member.php?305172-AbbasSediqi) از استفاده از کدهای سی شارپ این باشد که کرک رمز عبوری که برای فایل اکسس در فایل لودر اجرائی وارد شده مشکلتر از کرک رمز عبور در فایل لودر نوشته شده با وی بی باشد .
تا جائی که من پرس و جو کردم و نظر دوستان حرفه ای را جویا شد در همان محیط وی بی هم اگر رمز عبور را قدری حرفه ای تر وارد کنیم کرک نمودن آن به این راحتی هم نیست .
موفق باشین
در ضمن قابلیت نوشتن container در vb6 و یا vba وجود نداره
این رو در vb6 و یا vba معادل سازی کنید
اگر امکان داره
http://barnamenevis.org/showthread.php?519286-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-%D8%A7%D8%B8%D9%87%D8%A7%D8%B1-%D9%86%D8%B8%D8%B1-%D8%AF%D8%B1%D8%AE%D8%B5%D9%88%D8%B5-%D8%AF%D8%B1%D8%AC%D9%87-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D9%88-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%81%DB%8C%D8%B3-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%85%D9%88%D9%86%D9%87&p=2333284&viewfull=1#post2333284
atf_1379
سه شنبه 04 مهر 1396, 02:37 صبح
سلام جناب صدیقی!
با توجه به شناختی که درخصوص دیکامپایل نمودن فایل های اجرائی و نحوه دسترسی به سورس کدهای مربوطه در فایل های فوق دارید ممنون میشم اگر به سوال زیر با اطمینان پاسخ بدهید
دسترسی به کدها در یک فایل اجرائی C# .Net سخت تر است یا کدها نوشته شده در فایل های کامپایل شده اکسس در قالب فرمت mde یا accde
با تشکر
atf_1379
چهارشنبه 12 مهر 1396, 20:24 عصر
سلام جناب صدیقی!
با توجه به شناختی که درخصوص دیکامپایل نمودن فایل های اجرائی و نحوه دسترسی به سورس کدهای مربوطه در فایل های فوق دارید ممنون میشم اگر به سوال زیر با اطمینان پاسخ بدهید
دسترسی به کدها در یک فایل اجرائی C# .Net سخت تر است یا کدها نوشته شده در فایل های کامپایل شده اکسس در قالب فرمت mde یا accde
با تشکر
سلام
فکر کنم سوالی که کردم خیلی سخت بود که دوستان حرفه ای تا کنون پاسخی در خصوص آن ارائه ننمودند
جناب استاد بهرامی ! لطفاً با عنایت به پیام خصوصی در صورت امکان اظهار نظر فرمائید.
با تشکر
eb_343
پنج شنبه 13 مهر 1396, 01:37 صبح
سلام
فکر کنم سوالی که کردم خیلی سخت بود که دوستان حرفه ای تا کنون پاسخی در خصوص آن ارائه ننمودند
جناب استاد بهرامی ! لطفاً با عنایت به پیام خصوصی در صورت امکان اظهار نظر فرمائید.
با تشکر
سلام
با توجه به ماهیت سؤال و عنوان این تاپیک ، بهتر است سؤالتان را دریک تاپیک مجزا مطرح نمائید !
یا علی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.