ورود

View Full Version : اتصال از نوع ADODB



look20
چهارشنبه 14 بهمن 1388, 23:21 عصر
با سلام خدمت دوستان عزیز:
اتصال پایگاه من بوسیله اتصال با کدهای ADODC ولی می خوام از ADODB استفاده کنم میشه معادل زیر که به شکل ADODC هست رو به شکل ADODB برام بزارید




Ado.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB.mdb"
Ado.RecordSource = "select * from Table1"
Ado.Refresh
Ado2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB.mdb"
Ado2.RecordSource = "SELECT * FROM Table2 WHERE cod=" & Ado.Recordset.Fields("cod")
Ado2.Refresh
این کدها مربوط به رویداد load فرممه
در ضمن وقتی کدها رو تبدیل کردم EOF & BOF به چه صورت توی کد استفاده میشه
با تشکر

علیرضا حسن زاده
چهارشنبه 14 بهمن 1388, 23:33 عصر
Dim con As New ADODB.Connection
Dim rec As New ADODB.Recordset
With con
.CommandTimeout = 30
.ConnectionTimeout = 30
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open App.Path & "\DB.mdb"
End With

rec.Open "SELECT Name FROM Table1", con

فکر کنم با این کد بتونی روش کار رو درک کنی
البته باید در قسمت رفرنس ActiveX Data Objects 2.0 Library تیک خورده باشه وگرنه وقتی می خوای متغیری مثل con که بالا تعریف کردم رو تعریف کنی وقتی new رو بزنی ADODB رو نشون نمیده (البته حتما خودتون استاد هستین و می دونین)
در ضمن کار با Adodc خیلی راحت تر و بیشتر مواقع کار راه انداز و بدون کد نویسی به این نکته هم توجه داشته باشین که اگه خودتون واسه اتصال و گرفتن اطلاعات پایگاه داده دستور بنویسین امکان باگ وجود داره و در استفاده از Adodc این باگ ها به حداقل میرسه
بازم اگه سوالی بود در خدمتم؟:متفکر:

polisoftco
پنج شنبه 15 بهمن 1388, 00:41 صبح
سلام
بفرمایین اینم دوتا کتاب برای اتصال به بانک
اولی توسط ADO و دومی هم برای ADO و SQL Server

موفق باشین

look20
پنج شنبه 15 بهمن 1388, 21:48 عصر
با سلام ببخشید من نمیدونم این کد رو چطور تبدیل کنم:

Sub MaxNumberCod()
Dim CodNum As Long
If rsTbl1.State = 1 Then rsTbl1.Close
rsTbl1.Open "SELECT max(Cod) FROM Table1"
CodNum = rsTbl1.Fields(0)
txtcod = CodNum + 1
End Sub
می خوام این کد که از نوع ارتباط ADODB به صورت اتصال حالت ADODC باشه
راستش خودم نتونستم درست تعریف کنم اگه ممکنه کمک کنید

polisoftco
جمعه 16 بهمن 1388, 14:55 عصر
Sub MaxNumberCod()
Dim CodNum As Long
If rsTbl1.State = 1 Then rsTbl1.Close
rsTbl1.Open "SELECT max(Cod) FROM Table1"
CodNum = rsTbl1.Fields(0)
txtcod = CodNum + 1
End Sub


فقط بجای rstbl1 کلمه ADODC1.Recordset رو بنویسین. البته ADODC1 باید نام کنترل ADOی شما باشه.



Sub MaxNumberCod()
Dim CodNum As Long
If ADODC1.Recordset.State = 1 Then ADODC1.Recordset.Close
ADODC1.Recordset.Open "SELECT max(Cod) FROM Table1"
CodNum = ADODC1.Recordset.Fields(0)
txtcod = CodNum + 1
End Sub

look20
شنبه 17 بهمن 1388, 23:27 عصر
با سلام ببخشید دوست عزیز
وقتی دکمه رکورد جدید رو می زنم
این ارور مربوط به چیه؟
فایل تصویر ضمیمه شده است

polisoftco
چهارشنبه 21 بهمن 1388, 18:56 عصر
سلام
نوع فیلدتون چی هستش، و کدی که باهاش رکورد جدید میسازین چیه؟
فک کنم که توی دیتابیس گیر داره، آخه گفته فیلدتون قابلیت آپدیت نداره پس چیزی ساخته نمیشه.

look20
چهارشنبه 21 بهمن 1388, 19:42 عصر
سلام ببخشید نوع فیلد cod بصورت number و کد دکمه رکورد جدید:




Private Sub cmdNew_Click()
Call MaxNumberCod
End Sub
این هم کد مربوط به MaxNumberCod:


Sub MaxNumberCod()
Dim CodNum As Long
If Ado.Recordset.State = 1 Then Ado.Recordset.Close
Ado.Recordset.Open "SELECT max(Cod) FROM Table1"
CodNum = Ado.Recordset.Fields(0)
txtcod = CodNum + 1
End Sub

look20
پنج شنبه 22 بهمن 1388, 10:41 صبح
با سلام دوباره
اینم فرمم

polisoftco
جمعه 23 بهمن 1388, 23:51 عصر
سلام ببخشید نوع فیلد cod بصورت number و کد دکمه رکورد جدید:





Private Sub cmdNew_Click()
Call MaxNumberCod

End Sub



این هم کد مربوط به MaxNumberCod:



Sub MaxNumberCod()





Dim CodNum As Long

If Ado.Recordset.State = 1 Then Ado.Recordset.Close
Ado.Recordset.Open "SELECT max(Cod) FROM Table1"
CodNum = Ado.Recordset.Fields(0)
txtcod = CodNum + 1

End Sub






سلام دوست عزیز
من ویندوزم سونه و توش وی بی ندارم آخه تازه ویندوز عوض کردم.
کدی که برای دکمه جدید قرار دادین تنها برای صدا زدن بیشترین مقدار شماره آی دی هستش نه برای رکورد جدید.
برای رکورد جدید شما باید از کد ADODC1.Recordset.AddNew استفاده کنین.
بعدش برای مقدار دهی فیلدهاتون نیز از کد زیر استفاده کنین.




ADODC1.Recordset.AddNew
ADODC1.Recordset.Fields("ID")=TrimtxtID)
ADODC1.Recordset.Fields("FName")=Trim(txtName)
ADODC1.Recordset.Update

look20
شنبه 24 بهمن 1388, 12:25 عصر
با سلام و با تشکر از زحمات شما
ولی دوست عزیز هنوز همون پیغام بالایی که تصویرش رو ضمیمه کردم می ده!
وقتی از این کد :
Sub MaxNumberCod()
Dim CodNum As Long
If Ado.Recordset.State = 1 Then Ado.Recordset.Close
Ado.Recordset.Open "SELECT max(Cod) FROM Table1"
CodNum = Ado.Recordset.Fields(0)
txtcod = CodNum + 1

استفاده نمی کنم اروری نمی ده مطمئن هستم که پایگاه داده من درست عمل می کنه حالا چکار کنم!
آیا کد دیگه ای وجود نداره که بشه بجای کد maxNumbercod استفاده کرد

polisoftco
شنبه 24 بهمن 1388, 14:58 عصر
دوست عزیز من که خطایی توی این کدی نمی بینم که.
خودم تستش کردم کار میکنه، دیگه جای خطا دادن نداره که...!!

look20
شنبه 24 بهمن 1388, 23:18 عصر
با سلام و معذرت که اینقدر اذیت می کنم
دوست عزیز میشه فایلی که گذاشتم رو خودتون دانلود کنید (توی انتهای صفحه اول همین تاپیکه) و ببینید توی VB مشکلش چیه؟
نمی دونم چه گناهی کردید که گیر سیریشی مثل من افتادید
البته اگه امکان داره برام این کارو انجام بدید خیلی وقته توی این مشکل گیر کردم

polisoftco
دوشنبه 26 بهمن 1388, 21:57 عصر
دوست عزیز اروری که میداد مال تکست باکس بود ، چون اون رو توی فرم به ADO وصل کرده بودین و از طریق کدنویسی هم اتصال رو عوض کرده بودین پس باهم نمیتونستن ست بشن.

کد و فرم ویرایش شد.

موفق باشین

look20
دوشنبه 26 بهمن 1388, 22:55 عصر
سلام ممنون
ولی ببخشید پس قسمت بالای فرمم رو چکار کنم اونوقت قابل استفاده نمیشه؟!
من می خوام مثل قسمت پایین باشه

polisoftco
دوشنبه 26 بهمن 1388, 23:59 عصر
سلام
من قسمت بالا رو چک کردم جایی که برای ثبت نام هستش، دقیقا نمیدونم پایینی چیکار میکنه، اگه یکم راجع بهش توضیح بدین شاید بتونم کمکتون بکنم، زیاد بهش دقت نکردم من.

look20
سه شنبه 27 بهمن 1388, 09:58 صبح
با سلام و تشکر از اینکه وقت می زارید برای بنده
ببنید قسمت بالا مربوط پرسنل هست که قسمت پایین هم یه سری اطلاعات دیگه مربوط به همون پرسنله
مثلا پرسنل1در قسمت پایین چند رکورد براش ثبت شده که مربوط به ازمایشاتشه
مثل آزمایشات دوره ای استخدام
قرار بعدا براشون توی قسمت بالا و پایین فرمم عکس تعریف کنم
یعنی علاوه بر اینکه اون پرسنل مثلا 1 خودش عکس داره در قسمت پایین اطلاعات اسکن شده مربوط به پرسنل 1هر چندتا آزمایش رو هم که داره بصورت عکس بیاره
البته می تونم عکس تعریف کنم و مشکلی با این مسئله ندارم فقط میمونه کمک شما درمورد همین کد maxnumber
بازم ببخشید زحمتتون می دم

polisoftco
سه شنبه 27 بهمن 1388, 18:06 عصر
ببینین دوست عزیز شما بهتره از طریق کدنویسی به بانک وصل بشین و از طریق کدنویسی هم اطلاعات رو بنویسین/بخوانین (فک کنم پست های قبلی و یا تاپیک دیگری توضیح داده بودم) چون اون روش امکانات زیادی داره و دست برنامه نویس هم یکم باز تره.

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

حالا اینکارا به عهده خودته دیگه.

موفق باشین