ارتباط ويژوال بيسيك و ديتابيس

saalek110

Well-Known Member
من تگها را روي مطلب شما گذاشتم و در تاپيك آموزش اكسس زدم.
اگر روي دكمه
quote
كليك كنيد ، مي بينيد كه چه تگهايي استفاده شده.
مطلب باارزشي است و حيفه با فرمت بد دشوار باشه خواندنش.
خودتان پست من را تكرار كنيد تا من پست خود را حذف كنم. چون مطلب شماست و بعدا شايد بخواهيد اديت كنيد.
.
 

saalek110

Well-Known Member
by emad86_20011

من به يه نكته جالب رسيدم كه خيلي ازش استفاده كردم!! گفتم شايد به درد بخوره
براي گرفتن مقدار يه فيلد در يك table از اين روش ميشه استفاده كرد:

کد:
MyFieldData = Adodc1.Recordset!MyField

البته مقدار فيلدي داده ميشه كه در حال حاضر روي اون هستين!!
و ميتونين با همون MoveNext و... بقيه فيلد ها رو هم به دست بيارين!!

من واقعا تا حالا نديده بودم كه از علامت تعجب در برنامه استفاده بشه!! ولي براي اولين بار در اينجا ديدم!!
 
سلام دوستان من در حال تهیه پروژه پایانی می باشم
برای استفاده از پایگاه اکسس در vb
باید فایل اکسس را تور خاصی تهیه نمود لطفا به من یاد دهید . من پایگاهی با اکسس درست کردم ولی لینک به vb نمی شود لطفا هر چه سریعتر کمک کنید ممنون
 

saalek110

Well-Known Member
به نقل از تاپیک:
http://forum.persiantools.com/t76218.html
----------------------------------------------------
ftp://68.192.170.188/Ebooks/VisualBasic/Visual Basic 6 Database How-To (Sams-ebook).pdf

روی لینک کلیک راست و save target as را بزنید.
حجم : 5 و نیم مگا

c4.gif

کتابهای دیگری هم در مورد دیتابیس و وی بی اینجا موجود است:
http://www.flazx.com/category26.php
 
آخرین ویرایش:

saalek110

Well-Known Member
میخواستم ببینم میشه vb رو به mysql وصل کرد و اگر میشه چطوری؟


آموزشهای زیادی هست در سایتها. سرچ کنید.

ابزار مورد نیاز:

ایزی php
http://jaist.dl.sourceforge.net/sourceforge/quickeasyphp/easyphp1-8_setup.exe
هفت مگا.

mysql-connector-odbc
http://dev.mysql.com/get/Downloads/MyODBC3/mysql-connector-odbc-3.51.16-win32.msi/from/pick
دو و نیم مگا.

یک پروژه وی بی ساده
http://saalek110.250free.com/projects/vb6mysql.zip


بعد دانلود سورس این خط را جایگزین خط فعلی آن کنید تا با mysql جور دربیاید.

کد:
cnMySql.Connect = "uid=root;pwd=;server=localhost;" & _
    "driver={MySQL ODBC 3.51 Driver};database=mysql;dsn='';"


البته برای روشن شدن آپاچی که سرور درون ایزی php است باید IIS (در ویندوز ایکس پی ) را از مسیر کنترل پنل - Administrative Tools و IIS خاموش کنید.
 
آخرین ویرایش:

Parthia

Member
ببخشیدا وقت نکردم حرف بقیه بچه ها رو بخونم و من اینجا فقط کاری رو که بیشتر خودم توی برنامه هام انجام میدم مینویسم
با استفاده از کدهای زیر میتونید اطلاعات موجود در یک خانه فیلد Name در جدول Datas موجود در دیتا بیسی واقع در C:\TestDB.mdb دارای پاسورد parthia رو در بیارید و طبق یک روال Main در برنامه تان آن را در Field به نام myField ذخیره کنید :
(چقدر با حال گفتما :-?)
اول از همه وارد VB که شدید روی منوی Project کلیک کنید و به قولی Microsoft DAO 3.51 Object Library را به قسمت References برنامه تان اضافه کنید سپس در روال Main میتوانید کدهایی به صورت کدهای زیر بنویسید تا کار بالا را برایتان انجام دهد
کد:
Sub Main()
Dim DB As Database
Dim RS As Recordset
Dim myField As Field
Set DB = OpenDatabase("C:\TestDB.mdb", False, False, ";pwd=parthia")
Set RS = DB.OpenRecordset("SELECT * FROM Datas")
Set myField = RS.Fields("Name")
End Sub
بعدش هم که میتونید این myField رو به هر جایی بخواید پیوند بدید مثلا اینطوری :
کد:
MsgBox myField
lblTest.Caption = myField
امیدوارم بدرد خورده باشه !!!
(لطفا اگر میتونید به سوال من در پست بعدی جواب بدید)
 

Parthia

Member
سوال من اینه :
مثلا من یه Database رو توی اینترنت آپلود میکنم میخوام بدونم آیا میشه یه جوری کد نویسی کرد که برنامه به یه پایگاه داده در اینترنت متصل بشه ؟ یعنی به جای Path با URL ارتباط برقرار کنه میخواستم هم بدونم سرعتش خوبه یا نه خودم با DAO امتحان کردم نشد فکرک کنم با Data هم نمیشه میخوام بدونم با Adoc میشه اینطوری کار کرد ؟
 

night11

Member
بله میشه . شما باید رشته اتصال رو به اون سرور بدید .
به این صورت

کد:
Option Explicit

 

Dim adoConn As ADODB.Connection

Dim adoRst As ADODB.Recordset

 

Private Sub Command1_Click()

'============================

Dim strConString As String

Dim strSQL As String

 

    'assign connection string

    strConString = "Provider=MS Remote;" & _

                   "Remote Server=http://192.168.1.1;" & _

                   "Remote Provider=Microsoft.Jet.OLEDB.4.0;" & _

                   "Data Source=MyRemoteDB;Persist Security Info=False"

    

    'initialize connection object variable

    Set adoConn = New ADODB.Connection

    'open connection

    adoConn.Open strConString, "admin", ""

    

    strSQL = "Select * from Orders"

    

    'initialize recordset object variable

    Set adoRst = New ADODB.Recordset

    With adoRst

        .Open strSQL, adoConn, , , adCmdText

        If Not .EOF Then

            Do While Not .EOF

                'read each record here

                '...

                .MoveNext

            Loop

            .Close

        End If

    End With

    

    'destroy recordset object if necessary (or do it when you unload the form)

    'Set adoRst = Nothing

    

    'destroy connection object if necessary (or do it when you unload the form)

    'Set adoConn = Nothing

 

End Sub
 
آخرین ویرایش:

Mosaafer

New Member
سلام دوستان
من بانکهامو با اس کیو ال ساختم و فرمها را در وی بی6 طراحی کردم و با شی ادو ارتباط برقرار کردم و برای اضافه کردن اطلاعاتی که از کاربر توسط تکس باکس گرفته میشه به جدول اس کیو ال در دکمه ذخیره کد زیر رو نوشتم و با حالات مختلف چک کردم اما جواب نداد:
insert into person values(code.text)
که پرسن جدولم است و محتوای کد.تکست باید در فیلد کد این جدول ذخیره شود
میخواستم بدونم این دستور باید به چه صورت باشه؟
اصلا میشه توسط کدنویسی در وی بی6 به جداول اس کیو ال اطلاعات اضافه کرد؟
اگر میشه با چه دستوری و چطور؟(با مثال لطفا)
ممنونم
پایدار باشید
 

farhad110

Member
اتصال به ديتابيس (vb)

سلام به همه دوستان
به دلايلي مجبور شدم برنامه اي رو با vb بنويسم. براي اتصال به ديتابيس از adodb استفاده كردم. راه بهتري هم هست؟ (VB6)
کد:
Dim cnn  As New ADODB.Connection
Dim cmd  As New ADODB.Command
Dim rs  As New ADODB.Recordset

cnn.Open "connectionstring متناسب با نوع ديتابيس"
With cmd
.ActiveConnection = cnn
.CommandText = "select * from table where field=" & variable
.CommandType = adCmdText
End With
Set rs = cmd.Execute
تشكر
 
آخرین ویرایش:

the_king

مدیرکل انجمن
حقیقتا نه، ظاهر کد ها توسط DAO نسبت به ADO کمی خواناتر است، و در دسترسی به جداول Jet سریعتر است و
برای دسترسی به Access بهینه شده ولی وقتی خودتان با ADO آشنایی دارید و توصیه شده مایکروسافت هم هست
نیازی به تغییر روش به DAO را ندارید.

چند مقایسه میان DAO و ADO :
DAO
کد:
Sub DAOOpenJetDatabase()

   Dim db As DAO.Database

   Set db = DBEngine.OpenDatabase(".\NorthWind.mdb")
   db.Close

End Sub


ADO
کد:
Sub ADOOpenJetDatabase()

   Dim cnn As New ADODB.Connection

   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\NorthWind.mdb;"
   cnn.Close

End Sub


DAO
کد:
Sub DAOOpenJetDatabaseReadOnly()

   Dim db As DAO.Database

   ' Open shared, read-only.
   Set db = DBEngine.OpenDatabase(".\NorthWind.mdb", False, True)
   db.Close

End Sub


ADO
کد:
Sub ADOOpenJetDatabaseReadOnly()

   Dim cnn As New ADODB.Connection

   ' Open shared, read-only
   cnn.Mode = adModeRead
   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\NorthWind.mdb;"
   cnn.Close

End Sub
 

ua741

New Member
سلام
میشه یه کم در مورد توابع database توضیح بدید
و اینکه چطور می تونیم مستقیما به یک record دسترسی پیدا کنیم مثلا همون طور که recordcount تعداد recordها را می دهد یک دستور هم برای دسترسی مستقیم به record (به جای جستجو در تمام فیلدها) باشه
ممنون
 

ua741

New Member
با سلام
من در حال نوشتن یک برنامه با vb هستم که با دیتا بیس ارتباط برقرار میکنه
در این برنامه بایدیکسری نام دریافت بشه بعد برنامه چک می کنه که کدوم نام تکراریه ولی وقتی که با استفاده از for داره دونه دونه فیلدها رو میگرده این پیغام رو مید

error 3021
either bof or eof is true.or current record has been deleted
requested opperation requires a current record
مشکل از کجاست
آیا به طریق دیگه ای میتونم داخل رکوردها جستجو کنم؟
ممنون
 

saalek110

Well-Known Member
منبع: hamed_Arfaee
http://www.forum.iranled.com/showthread.php?tid=3872
----------------------------------------------------------------------
شماره : #1
ارتباط با دیتا بیس با ADO

یک مقاله در مورد روشهای ارتباط با دیتا بیس
ADODB
ADODC
http://basic.persiangig.com/Archive/ADO.zip


ADO.zip (اندازه: 136.71 کیلو بایت / دفعات دانلود: 206)

--------------------------
سالک: من هم برای احتیاط اینجا آپلود کردم:
http://www.divshare.com/download/4007726-627
 

saalek110

Well-Known Member
از همان منبع: hamed_Arfaee
http://www.forum.iranled.com/showthread.php?tid=3872
-----------------------------------------------------------------------

با سلام
يكمم خودم مي نويسم :
براي ارتباط با ديتابيسهايي كه با اكسس 2000 به بالا ساخته شده اند

براي اين كار ميتوان از دو روش استفاده كرد :
اولين :
با استفاده از adodc
با استفاده از كليدهاي ctrl + t به صفحه ي كامپوننت ها رفته و گزينه Microsoft ADO data control 6.0 رو به پروژه اضافه كنيد
بعد اونو به رويه فرم اضافه كنيد و مانند ديتا كنترل ذاتي كه مربوط به نسخه jet 2.0 هست با اين كنترل رفتار مي كنيم
در مرحله بعد از خصوصيات كنترل adodc گزينه custom را انتخاب كرده و با استفاده از دكمه Build صفحه انتخاب ديتابيس مي رويم و از صفحه باز شده گزينه : Microsoft Jet 4.0 OLE DB Provider رو انتخاب كرده و با دكمه Next به مرحله انتخاب ديتابيس مي رويم و بعد از انتخاب ديتابيس براي مطمئن شدن از درستي ارتباط دكمه Test Connection رو كليك مي كنيم و بعد از دريافت پيام موفقيت در ارتباط با استفاده از دكمه ok پنجره رو مي بنديم
و با برگشت به پنجره Property برگه RecordSource رو انتخاب كرده و از ليست Command Type گزينه adCmdTable رو انتخاب مي كنيم (براي انتخاب كل جدول ) و يا با انتخاب adCmdText در كادر SQL مي توانييم دستورات sql رو بنويسيم و يا با انتخاب گزينه adcmdStoredProc مي توانييم از كوئري هاي نوشته شده در بانك اكسس استفاده كنيم
(( توجه در صورت انتخاب adCmdTable يا adcmdStore... بايد از ليست Table or stored Procedure name نام جدول و يا كوئري مورد نظر رو انتخاب كنيم
بعد همانند كنترل ديتاي jet 2.0 كه جزو كنترلهاي ذاتي است با آن ديتابيس رفتار مي كنيم
و براي فهميدن دستورات فرمان اين كنترل مي تونيين از اون پي دي اف كه تو پست بالا گذاشتم استفاده كنيد
روش دوم هم كه توسط كد نويسي هست بعدا مي گم :
 

saalek110

Well-Known Member
از همان منبع: hamed_Arfaee
http://www.forum.iranled.com/showthread.php?tid=3872
----------------------------------------------------------------------

قسمت دوم (با تاخير)
قسمت دوم خودمون با استفاده از كد نويسي به ديتابيس متصل مي شيم و داده رو از اون مي گيريم
در اين حالت ابتدا بايد كتابخانه ADO رو به پروژمون اضافه كنيم بطريق زير :
Project >> Refrences...
و از پنجره باز شده گزينه Microsoft ActiveX Data Objects 2.7 Library رو انتخاب مي كنيم و به پروژمون اضافه مي كنيم
حالا شروع به ساخت اتصالات مي كنيم :
ابتدا در قسمت جنرال ( محل كد نويسي فرم اصلي) يك شي براي اتصال به ديتا بيس مي سازيم و يك شي براي اتصال به جدول(و يا انتخاب بخشي از جدول(جداول))
کد:
Dim cnn As New ADODB.Connection
Dim rec As New ADODB.Recordset
حالا بايد اين اشيا شروع بكار كنند
براي متصل شدن به ديتابيس از اشيا تعريف شده بشرح زير استفاده مي كنيم :
کد:
Private Sub Form_Load()
Dim strSql As String
cnn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=" & App.Path & "\db1.Mdb;" & ";Jet OLEDB:Database Password=Pass"
cnn.CursorLocation = adUseClient
cnn.Open
strSql = "Select * from table1;"
rec.Open strSql, cnn, adOpenDynamic, adLockOptimistic
End Sub
خوب حالا ما با فرض اينكه نام ديتا بيس ما db1.mdb است و داراي پسورد Pass مي باشد به آن متصل مي شويم
و از جدولي كه در آن ديتابيس با نام table1 است تمام اطلاعاتش را انتخاب ميكنيم
يعني اين ركوردست كه rec نام دارد به تمامي اطلاعات جدول table1 دسترسي دارد
براي مثال به كد رويداد كليك كه براي يك شي دكمه كه روي همين فرم قرار دارد توجه كنيد :
کد:
msgbox "All records count  :" & rec.recordcount
با دستور فوق روي فرم تعداد سطرها(ركوردها)ي جدول نمايش داده مي شود
همين
براي استفاده از امكانات ado هم همون كتابي رو مطالعه كنيد كه در پست اول معرفي كردم
براي استفاده از دستورات اس كيو ال و ارتباط با جداول و انتخاب بازجستها در پست بعدي توضيح مي زنم
 

جدیدترین ارسال ها

بالا