View Full Version : یک سوال مهم در مورد adodc
click.1387
سه شنبه 20 مرداد 1388, 15:57 عصر
سلام
یک موضوع که شاید سوال بعضی از دوستان دیگر هم هست
برای اتصال به بانک اکثر دوستان از روش کد نویسی این کار رو می کنند ما هم می گیم کارشون درست . اما یک روش ساده هم هست که میشه فقط در قسمت نام Adodc نام بانک رو نوشت تا بانک هر جا هست و قراره برنامه نصب بشه با برنامه کار بکنه خیلی ساده تر از روش کد نویسی .
یکی از دوستان در مورد روش دوم یه مشکل رو مطرح کردند که من با چند بار تست کردن فقط یک بار این مشکل برایم نمایان شد و وقتی که پروژه را exe می کنیم دیگه اون مشکل هم رفع میشه حالا شما بگید که آیا مشکلی داره که از روش دوم استفاده کنیم
1- روش اول که گفتم کدنویسی دارد
2- روش دوم فقط ما نام بانک رو می نویسیم
3- روش سوم که نگفتم باید مسیر بانک رو بدیم و بانک ما ثابت هست .
شما بگید چه تفاوت هایی دارد ؟؟
xxxxx_xxxxx
سه شنبه 20 مرداد 1388, 16:07 عصر
اگر امكانش هست يك سمپل براي روش دوم بزاريد. چطور ممكنه كه نام Adodc رو بزاريم همون نام ديتابيس آنوقت نوع آن، آدرس آن و جدول آن خود به خود اختصاص داده شود!!!!!!!!
click.1387
سه شنبه 20 مرداد 1388, 23:05 عصر
سلام دوست عزیزم
نه منظورم رو نگرفتید
فایل ضمیمه رو ببینید بد نیست نتیجه رو اعلام کنید ببینم نظر شما چیه
saeedzx
سه شنبه 20 مرداد 1388, 23:51 عصر
سلام من میدونم منظورت چیه چونمشکل خودم هم بود
تومیخوای مسیر بانک رو کاری کنی از توی text پیدا کنه چون میخوای بانک رو کاری کنی که کاربر هر جا دوست داره کپی کنه و خود برنامه اتوماتیک بانک رو بشناسه
اگه درست گفتم بگو تا ادامه بدم
vbhamed
چهارشنبه 21 مرداد 1388, 00:15 صبح
سلام
ببينيد دوست عزيز
در ويندوز چيزي داريم به نام مسير جاري ويندوز
وقتي شما برنامه اي رو اجرا كنيد به صورت پيشفرض مسير جاري ويندوز به مسير برنامه شما تغيير پيدا مي كنه
اگر يك ShortCut روي Desktop بزاريد و روش راست كليك كرده و Properties رو بزنيد در قسمت Start in ميتونيد ببينيد كه قبل از اجرا مسير ويندوز به چه چيزي تغيير مي كنه
حالا اگر شما در ADO فقط نام بانك رو بنويسيد برنامه در مسير جاري دنبالش مي گرده و پيداش مي كنه و اجرا ميشه و مشكلي هم پيش نمياد
اما اين مسير جاري به راحتي مي تونه تغيير كنه، خيلي عوامل هستند مثلا اينكه مسير جاري توسط برنامه ديگري عوض بشه يا اينكه تو همون قسمت Start in مسير رو عوض كنيد كه در اونصورت برنامتون به مشكل بر مي خوره
پس بهتره كاري رو كه ممكنه حتي گاهي مشكل داشته باشه انجام نديم
ضمن اينكه انجام اين كار در كد باعث انعطاف پذيري بيشتر برنامه ميشه و اگر مثلا زماني نام بانك قرار بود عوض بشه لازم نيست بريد تو همه جا نام رو در ADO به صورت دستي عوض كنيد بلكه ميشه از يك متغير سراسري استفاده كرد
click.1387
چهارشنبه 21 مرداد 1388, 00:51 صبح
سلام
دوست عزیز همین ماجرای مسیر جاری که شما می گید من همه جوره امتحانش کردم و هیچ مشکلی پیش نیومده و....
خب حرف شما درست کد نویسی بهتر من هم نمی گم بده ولی خب خوانایی برنامه یه جورایی کم می شه حالا نمی دونم ...
شما نمونه کدی دارید که از طریق کد بشود وصل بانک شد و اینکه فقط یک بار در یک ماژول بنویسیم و چند بار اجرا کنیم ؟؟
click.1387
چهارشنبه 21 مرداد 1388, 00:54 صبح
سلام من میدونم منظورت چیه چونمشکل خودم هم بود
تومیخوای مسیر بانک رو کاری کنی از توی text پیدا کنه چون میخوای بانک رو کاری کنی که کاربر هر جا دوست داره کپی کنه و خود برنامه اتوماتیک بانک رو بشناسه
اگه درست گفتم بگو تا ادامه بدم
سلام دوست عزیز
بله درست فهمیدید . فقط اینکه من نمی خوام از یک تکست بگیرم
شما اگر نمونه دارید لطف کنید بذارید
ممنون
mmssoft
چهارشنبه 21 مرداد 1388, 01:09 صبح
سلام دوست عزیز
بله درست فهمیدید . فقط اینکه من نمی خوام از یک تکست بگیرم
شما اگر نمونه دارید لطف کنید بذارید
ممنون
Data1.DatabaseName = CommonDialog1.FileName
saeedzx
چهارشنبه 21 مرداد 1388, 10:32 صبح
ببین واسیه این کار تو میخوای از data1 استفاده کنی بیا Adodc1 چون راهکار هاش فرق می کنه و دستوراتش هم فرق میکنه خوب من کدومو توضیح بدم ؟؟؟؟؟؟
HjSoft
چهارشنبه 21 مرداد 1388, 12:04 عصر
سلام
دوست عزیز همین ماجرای مسیر جاری که شما می گید من همه جوره امتحانش کردم و هیچ مشکلی پیش نیومده و....
خب حرف شما درست کد نویسی بهتر من هم نمی گم بده ولی خب خوانایی برنامه یه جورایی کم می شه حالا نمی دونم ...
شما نمونه کدی دارید که از طریق کد بشود وصل بانک شد و اینکه فقط یک بار در یک ماژول بنویسیم و چند بار اجرا کنیم ؟؟
براي مثال يك بار با استفاده از Common يك مسير دلخواه را باز كنيد . بعد برنامه مسير جاريش عوض ميشه . تا دلت بخواد من از اين نوع مشكل ها در اين روش برام پيش اومده .
click.1387
چهارشنبه 21 مرداد 1388, 23:16 عصر
براي مثال يك بار با استفاده از Common يك مسير دلخواه را باز كنيد . بعد برنامه مسير جاريش عوض ميشه . تا دلت بخواد من از اين نوع مشكل ها در اين روش برام پيش اومده .
سلام
من که قرار نیست در برنامم از Common استفاده کنم در ضمن Common های نرم افزارهای مختلف هم باز کردم آخه هیچ مشکلی پیش نمیاد .
click.1387
چهارشنبه 21 مرداد 1388, 23:18 عصر
ببین واسیه این کار تو میخوای از data1 استفاده کنی بیا Adodc1 چون راهکار هاش فرق می کنه و دستوراتش هم فرق میکنه خوب من کدومو توضیح بدم ؟؟؟؟؟؟
سلام
اگر زحمتی نیست هر دو روش رو بگید ولی برنامه من adodc هستش
در ضمن بانک من هم پسورد دارد .
click.1387
چهارشنبه 21 مرداد 1388, 23:20 عصر
دوست عزیز saeedzx
من می خوام اگر نمونه برنامه میذارید و یا اینکه از دیتا گرید استفاده می کنید روش ست کردنشون رو به بانک برام توضیح بدی ممنونم .
click.1387
پنج شنبه 22 مرداد 1388, 19:07 عصر
سلام
کسی نیست کمک کنه ؟ :گریه::گریه::عصبانی++::گریه:
saeedzx
پنج شنبه 22 مرداد 1388, 21:17 عصر
ببین من قسمت به قسمت بهت توضیح میدم باشه
اول تو باید یک سورسی درست کنی که مسیر پوشه بانک رو بهت بده
بعد از اون برنامه Exe بگیری
بعد باید مسیر ذخیره شده رو بار گذاری بکنی
و مسیر بانک اطلاعاتی خودتو از اون تو پیدا کنی
خوب اگه متوجه نشدی بیا چت کنیم ایدی این کنار هست
click.1387
جمعه 23 مرداد 1388, 01:45 صبح
سلام
کسی نیست کمک کنه ؟
vbhamed
جمعه 23 مرداد 1388, 03:32 صبح
سلام
يك ماژول اضافه كنيد و كد زير رو بنويسيد
Global dbase As String
Global dbasePass As String
كد زير رو هم ابتداي فرمهاتون بزاريد
Private Sub Form_Load()
On Error Resume Next
'نوشتن 2 خط زير تنها در اولين فرمي كه نمايش مي ديد كفايت مي كنه
dbase = Replace(App.Path & "\test.mdb", "\\", "\")
dbasePass = "123"
With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbase & ";Persist Security Info=False;Jet OLEDB:Database Password=" & dbasePass
.Refresh
End With
End Sub
click.1387
شنبه 24 مرداد 1388, 00:22 صبح
سلام
يك ماژول اضافه كنيد و كد زير رو بنويسيد
Global dbase As String
Global dbasePass As String
كد زير رو هم ابتداي فرمهاتون بزاريد
Private Sub Form_Load()
On Error Resume Next
'نوشتن 2 خط زير تنها در اولين فرمي كه نمايش مي ديد كفايت مي كنه
dbase = Replace(App.Path & "\test.mdb", "\\", "\")
dbasePass = "123"
With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbase & ";Persist Security Info=False;Jet OLEDB:Database Password=" & dbasePass
.Refresh
End With
End Sub
سلام
دوست عزیز می تونید مشکل برنامه زیر که از کد بالای شما استفاده شده رو پیدا کنید و تصحیح کنید ؟
mraforums
شنبه 24 مرداد 1388, 10:17 صبح
دوست عزیز امیدوارم این راه حل بتونه بدرت بخوره من از این روش استفاده می کنم فکر کنم این روش خوبه
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\info.mdb ;Persist Security Info=False"
Adodc1.RecordSource = "SELECT * FROM table1"
Adodc1.Refresh
البته روشی که شما گفتید یعنی فقط اسم رو در adodc آوردن هم درسته وبرنامه هرکجا باشه اگر دیتابیس رو هم اونجا بذاری بدون هیچ مشکلی اجرا میشه
شما می تونید اون کد بالایی رو در قسمت لود فرم یا در کجای دیگر که لازم شد قرار دهید
havash
شنبه 24 مرداد 1388, 20:04 عصر
سلام من هم همین مشکل رو دارم . خیلی هم باهاش مشکل دارم . با دیتا می شه کد نوشت اما اداک رو نمی شه . شاید بشه من بلد نیستم .
کسی کدش رو داره ؟
HjSoft
یک شنبه 25 مرداد 1388, 10:48 صبح
براي اينكه اين موضوع زياد كش پيدا نكنه ، كد كامل كانكت شدن رو ميزارم . البته اين روش از اسم بانك اطلاعات استفاده اي نمي كنه و هيچ فرقي بين اين دو روش نيست . اما به نظر من اين روش بهترين روشه :
Dim dbPath As String
Dim SQl As String
dbPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\db.hjdb;Persist Security Info=False;Jet OLEDB:Database Password=hjs"
SQl = "SELECT * FROM bimar"
With mm.db
.ConnectionString = dbPath
.CommandType = adCmdText
.RecordSource = SQl
.Refresh
End With
With mm.dbshow
.ConnectionString = dbPath
.CommandType = adCmdText
.RecordSource = SQl
.Refresh
End With
Exit Sub
Select Case ErrorNum
Case 16389:
MsgBox "ÈÇäß ÇØáÇÚÇÊ ÈÑäÇãå ÏÑ ãÓíÑ ÎæÏ ÞÑÇÑ äÏÇÑÏ", vbCritical, "ÎØÇ"
Unload Me
Case 3639:
MsgBox " ÓÇÎÊÇÑ ÇíÇå ÏÇÏå ÏÇÑÇí ãÔ˜á ÇÓÊ æ ÈÑäÇãå ÞÇÈá ÇÌÑÇ äãí ÈÇÔÏ", vbCritical, "ÎØÇ"
Unload Me
Exit Sub
Case Else
End
End Select
vbhamed
چهارشنبه 28 مرداد 1388, 00:26 صبح
سلام
دوست عزیز می تونید مشکل برنامه زیر که از کد بالای شما استفاده شده رو پیدا کنید و تصحیح کنید ؟
سلام
مشكل اين بود كه RecordSource رو نبايد در حالت طراحي داخل ADODC بزاريد و بايد بيارينش تو كد برنامه
Private Sub Form_Activate()
Adodc1.Refresh
End Sub
Private Sub Form_Load()
On Error Resume Next
dbase = Replace(App.Path & "\test.mdb", "\\", "\")
dbasePass = "20"
With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbase & ";Persist Security Info=False;Jet OLEDB:Database Password=" & dbasePass
.RecordSource = "select * from a"
.Refresh
End With
End Sub
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.