PDA

View Full Version : OLE - کار در اکسس از طریق VB



smderfan
چهارشنبه 02 اسفند 1385, 14:43 عصر
سلام
من دارم روی برنامه ای کار می کنم که در وی بی طراحی شده به اینصورت که پس از اجرای فرم برنامه اکسس لود می شه حالا چند مشکل برام پیش اومده و اینکه :
1- برنامه چک کنه اگر اکسس روی سیستم نصب نیست پیام بده.
2- می خوام پس از اینکه اکسس باز شد بصورت خودکار یک Database جدید ایجادبشه ...
3- کاربر در محیط اکسس به سوالی که در فرم وی بی هست جواب بده ....
مثلا : یک جدول جدید ایجاد کرده و دو فیلد A و B را به آن اضافه نمائید سپس آنرا با نام Test ذخیره کنید؟
4- در این مرحله کاربر بر روی دکمه Check از فرم وی بی کلیک می کنه اگر تغییرات گفته شده درست بود پیام True در غیر اینصورت False داده می شه و پنجره اکسس بدوه ذخیره بسته میشه.
پیشاپیش از زحمتی که می کشید متشکرم.

smderfan
پنج شنبه 03 اسفند 1385, 00:11 صبح
از دوستان کسی نیست کمک کنه ...

zerobit-ltd
پنج شنبه 03 اسفند 1385, 10:35 صبح
برنامه چک کنه اگر اکسس روی سیستم نصب نیست پیام بده.
باید این مسیر تو رجیستری رو چک کنی؛ اگر موجود بود، یعنی access نصبه.


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\ Access\InstallRootدستور path تو این مسیر، محل نصب access رو نشون می ده. به جای 11.0 هم، می تونه شماره version های مختلف office قرار داشته باشه.



می خوام پس از اینکه اکسس باز شد بصورت خودکار یک Database جدید ایجادبشه ..
برای این کار باید از adox استفاده کنی. قبلا یه بنده خدایی اینو مطرح کرده بود و جواب گرفت. واسه این یکی باید search کنی.



کاربر در محیط اکسس به سوالی که در فرم وی بی هست جواب بده ....
در این مرحله کاربر بر روی دکمه Check از فرم وی بی کلیک می کنه اگر تغییرات گفته شده درست بود . . .
این دو تا مساله رو هم باید از طریق کد نویسی کنترل کنی.

smderfan
پنج شنبه 03 اسفند 1385, 23:59 عصر
مراحل ارزیابی از داخل برنامه Word رو انجام دادم ولی اکسس رو نمی تونم ....
دوستان اگر لطفی کنند و راهنمایی کنند به چه صورت می تونم پس از فراخوانی اکسس یک بانک جدید ایجاد کنم و یک عملیات مقایسه ای مثل مثال زیر رو انجام بدم ....
* یک جدول جدید ایجاد کرده و دو فیلد A و B را به آن اضافه نمائید سپس آنرا با نام Test ذخیره کنید؟ *

**************
نمونه Word :

vbhamed
جمعه 04 اسفند 1385, 08:52 صبح
سلام

یه راه هست که اگه اکسس نصب نباشه می تونی نصبش کنی بدون اینکه کاربر چیزی بفهمه !

zerobit-ltd
جمعه 04 اسفند 1385, 09:08 صبح
همون طور که گفتم، برای ایجاد database تو access از طریق کد نویسی، باید از adox استفاده کنی. لینک های زیر بهت کمک می کنن:
[/URL]http://barnamenevis.org/forum/showthread.php?t=3404&highlight=adox (http://barnamenevis.org/forum/showthread.php?t=3404&highlight=adox)
[URL]http://barnamenevis.org/forum/showthread.php?t=18191&highlight=adox
http://barnamenevis.org/forum/showthread.php?t=13653&highlight=adox

smderfan
جمعه 04 اسفند 1385, 10:56 صبح
* جواب سوال اول رو با چک رجستری بدست آوردم ..... (با تشکر از zerobit-ltd عزیز)
* در مورد سوال دوم : ایجاد بانک اطلاعاتی استاد عزیزمان zerobit-ltd عزیز در بالا یکسری مسیر رو دادند کد زیر رو پیدا کردم ... حالا می خوام بیبنم کجا باید این کد رو کپی کنم .... ببخشید که سوالات من پیش پا افتاده است.


Public Sub CreateDatabase()
Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim wrkDefault As Workspace
Dim dbsDatabase As Database
Dim rstRecordSet As Recordset

Set wrkDefault = DBEngine.Workspaces(0)

Set dbsNorthwind = wrkDefault.CreateDatabase("C:\Data.mdb", dbLangGeneral, dbEncrypt)

Set dbsDatabase = OpenDatabase("C:\Data.mdb")

Set tdfNew = dbsDatabase.CreateTableDef("Table1")

With tdfNew
.Fields.Append .CreateField("Field1", dbText)
.Fields.Append .CreateField("Field2", dbText)
.Fields.Append .CreateField("Field3", dbText)
End With

dbsDatabase.TableDefs.Append tdfNew
Set rstRecordSet = dbsDatabase.OpenRecordset("Table1", dbOpenDynaset)
With rstRecordSet
.AddNew
!Field1 = "Field1::Record1"
!Field2 = "Field2::Record1"
!Field3 = "Field3::Record1"
.Update
.Close
End With

dbsDatabase.Close
End Sub

zerobit-ltd
جمعه 04 اسفند 1385, 11:08 صبح
این زیر برنامه عمومی برای ایجاد database هستش. این کد رو باید تو یه module قرار بدید. چون public تعریف شده، تو فرم نمی تونه قرار بگیره. اگر private ش کنی، تو فرم هم قرار می گیره.
بعد هر جا که نیاز داشتی یه database جدید ایجاد کنی، این زیر برنامه رو فراخونی می کنی.

smderfan
جمعه 04 اسفند 1385, 11:38 صبح
مشکل ایجاد بانک حل شد ....

smderfan
جمعه 04 اسفند 1385, 12:22 عصر
سوالات من یک سری 24 تایی هست حالا چطوری می تونم سوالات رو فراخوانی کنم.
پنجره فرم سوال در وی بی شامل گزینه هایی مشابه تصویر زیر هست.

zerobit-ltd
جمعه 04 اسفند 1385, 12:52 عصر
اگر سوالات رو تو database نگه می دارید (که منطقا باید این جوری باشه)، با یه query ساده می تونید سوالات رو از جدول مربوطه بخونید.