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

saalek110

Well-Known Member
با سلام.
با كمك دوستان
قراره اين قضيه را كار كنيم.
هر كس هر كمكي از دستش برمي آيد دريغ نكند.
من دنبال مطلب مي گردم. آدرس اگر داشتيد بگيد.
هر چي كه كمك به اين موضوع كنه.
اگه خواستيد لينك ها را خصوصي بفرستيد تا مورد استفاده قرار بگيره.
يا حق.
 

saalek110

Well-Known Member
dao چيست؟
براي شروع دستورات اوليه و محيط كار را معرفي كنيد.
.دستورات
sql
را چطور بايد استفاده كنيم؟
 
آخرین ویرایش:

night11

Member
سلام
سالک جان تاپیک خوبی رو استارت کردی !
من تا جایی که بتونم کمک می کنم
ارتباط با پایگاهای داده ی MySql , Sql Server , Access
بررسی می شن که من MySql رو بیشتر می پسندم
 

night11

Member
ADO (Activex Data Object) یک Component object model هست شی ء برای دسترسی به منابع داده .
ADO یک لایه بین زبان برنامه نویسی و OLE DB که به توسعه دهندگان اجازه می دهد برنامه ای بنویسند که به داده ها دسترسی داشته باشند .بدون اینکه اینکه بدانند پایگاه داده چگونه پیاده سازی شده .
شما فقط برای ارتباط باید از پایگاها داده اطلاع داشته باشید .
برای دسترسی به پایگاه داده وقتی که از ADO استفاده می کنید نیازی به دانستن دستورات SQL ندارید .
هر چند یکبار می توانید ADO را بوسیله ی دستورات SQL اجرا کنید .
اشکال این کار این است که این معرفی کردن وابستگی بر روی پایگاه داده ایجاد می کند .

ADO شامل چندین سطع شی ء هست .

Connrction : نمایش ارتباط با پایگاه داده
Recordsetدسترسی به یک دسته از رکوردهای پایگاه داده :
Command : نمایش یک دستور SQL
Record :نمایش یک دسته از داده ها ، بطور نمونه از یک منبع متفاوت یک پایگاه داده
Stream : نمایش مسیر داده ها از یک فایل متنی یا صفحه وب
Error : ذخیره کردن خطاها
Field : نمایش فیلدهای پایگاه داده
Parameter : نمایش پارامترهای SQL
Property : ذخیره اطلاعات شی ها

ADO برای ارتباط با زبانهای سطح بالا استفاده می شود .
همانند محیط VBScript in an Active Server Pages (ASP) و Visual Basic حتی Delphi که محیط توسعه مایکروسافت رقیب برلند .
هم اکنون اجازه داده شده که از ADO برای اتصال به پایگا ههای داده مختلف استفاده کنید .
در چارچوب جدید برنامه نویسی .NET مایکروسافت یک نسخه بروز از ADO رو حاضر کرده که ADO.NETنامیده می شود که ساختار شی آن کاملا با قبلی متفاوت است .

منبع : http://en.wikipedia.org/wiki/ADO
 

saalek110

Well-Known Member
واقعا ممنون. خيلي عالي بود. استارت خوبي بود.
===============================
چيزي كه من از بحثهاي بالا فهميدم اين بود كه ado يك شي هست از نوع com .
حالا com را دقيقا نمي دونم چيه. اگر كسي توانست يك توضيحي بدهد.
ولي اين ado ، انگار به دليل شي بودنش يكسري دستورات داره براي ارتباط با ديتا بيس.
حالا اولين سئوال من اينه كه :
آيا اين دستورات متعلق به اين شي است يا دستورات sql است. يك كم زير ديپلم بگيد تا ما هم ياد بگيريم.
Ole db چيه؟ كلا راجع به ole هم به زبان ساده يك كم توضيح بدهيد. چون مي خواهيم اين تاپيك براي همه قابل استفاده باشه. اگر هم فعلا كسي شرحي آماده نداره، مهم نيست. فعلا شروع مي كنيم به استفاده از دستورات، بعدا تئوري ها را بحث مي كنيم.
((معرفی کردن وابستگی بر روی پایگاه داده ایجاد می کند .))
منظور از جمله بالا چیست؟ اين وابستگي چه طوري ايجاد شده و چه مشكلاتي ايجاد مي كند و راه رفعش چيست؟ حداقل يكي از اين 3 سئوال را يك نفر جواب بدهد.

كلا ado چيه؟ آيا جزو ويژوال بيسيك و دات نت هست يا جدا نصب ميشه؟ آيا قابل جدا كردن است از ويژوال بيسيك و asp و دات نت؟

اگر ميشه در ويژوال بيسيك روش استفاده از اين دستورات را بگيد. البته اگر وقت نداريد ، بعدا من خودم پيدا مي كنم از سورسها.
فعلا تا اينجا خيلي خوب بود . دست شما درد نكنه.
.
 
آخرین ویرایش:

night11

Member
خواهش می کنم !
============================
حالا com را دقيقا نمي دونم چيه. اگر كسي توانست يك توضيحي بدهد.
============================
Component Object Model یک پایگاه برای اجزاء نرم افزارها است و برای فعال کردن ارتباط وپیوند زدن اجرا و ایجاد اشیای پویا در هر زبان برنامه نویسی که از این تکنواوژی پشتیبانی میکند .
Com اغلب در جهان توسعه نرم افزاری بعنوان لفظ حفاظ استفاده می شود که تکنولوژی های OLE, ActiveX, COM+ and DCOM را در احاطه قرار داده است .
COM در سال 1993 بوجود آمد اگر چه مایکروسافت در سال 1997 به آن رسمیت بخشید .
هر چند که COM طی چند دوره تکمیل شده اما اصولا با Microsoft Windows عرضه می شود .

============================
آيا اين دستورات متعل به اين شي است يا دستورات sql است. يك كم زير ديپلم بگيد تا ما هم ياد بگيريم.
============================
گفتم که برای استفاده از ADO نیازی به SQL نیست و و قتی که نیازی نباشه و ما از SQL استفاده کنیم برنامه بانک اطلاعاتی ما از واسط SQL استفاده کرده
در واقع ما بدون استفاده از SQL و فقط با استفاده از ADO هم می توانیم برنامه بانک اطلاعاتی بنویسیم .

============================
Ole db چيه؟ كلا راجع به ole هم به زبان ساده يك كم توضيح بدهيد.
============================
یک API هست که مایکرو سافت برای دسترسی به بانک های اطلاعاتی طراحی کرده است .
 

saalek110

Well-Known Member
ممنون . بروم بخوانم و فكر كنم. زحمت كشيديد.
----------------------
من قصد دارم سورسهايي را بگذارم. دوستان در شرح عمليات كمك كنند.
اگر منبع يا سورسي هم كسي داشت لطف كند..
 
آخرین ویرایش:

saalek110

Well-Known Member
ويژوال بيسيك مي تواند خودش ديتابيس بسازد. براي اينكار به منوي add-ins برويد و visual data manager را كليك كنيد. يك پنجره باز مي شود.


a2.gif


بعد از منوي فايل در اين پنجره ، new را انتخاب مي كنيم و بعد microsoft accese و بعد version 7.0 mdb ، در اينجا مي خواهد ديتابيس خود را با نامي در هارد save كنيد. بعد اين كار نماي زير را خواهيم داشت.:


a3.gif


در شكل بالا جايي كه ماوس نشان مي دهد ، يك بعلاوه است . اگر روي آن كليك كنيم ، يكسري پراپرتي نمايان مي شود. ولي نيازي به نگراني نيست . فقط روي كلمه property كليك راست كنيد و new را برگزينيد. پنجره اي باز مي شود به نام table structure ......


a4.gif


در اين پنجره نامي به table خود بدهيد. بعد دكمه add field را بزنيد تا فيلدهاي خود را تعيين كنيد . بعد تعيين فيلدها دكمه بيلد را بزنيد.

Copyright: 2002
By: Jason Hensley
Email: [email protected]
Website: http://www.vbcodesource.com
.
 
آخرین ویرایش:

saalek110

Well-Known Member
با تشكر از zapata_s24 كه كل كار را ايشان راهنما بودند.

ابتدا از منوي پروجكت ، زير منوي كامپوننت ، دو شي microsoft ado data control 6.0(oledb) و microsoft datagrid control 6.0(oledb) را به جعبه ابزار ( toolbox ) افزودم.

بعد هر دو را روي فرم قرار دادم.

بعد راست كليك كردم روي كنترل ado و پراپرتي را انتخاب كردم. يك پنجره باز شد. Tab اول general بود. در اين تب ، 3 آپشن باتن موجود بود ، سومي use connection string بود.
با زدن دكمه build يك پنجره ديگر باز شد به نام data link property ، در تب اول كه تب provider بود ، من انتخاب microsoft jet 4.0 ole db provider را برگزيدم. در تب دوم كه تب connection بود ، محلي براي browse داشت. كه فايلي كه با اكسس ساخته بودم را برگزيدم.
بعد ok كردم. تا به پنجره باز قبلي برگرديم. در اين پنجره به تب recordsource رفتم و در آنجا در كومبو باكس command type ، گزينه 8-adCmdUnknown را انتخاب كردم. و در همين تب ، كمي پايين تر ، در قسمت command text(sql) اين دستور را نوشتم:

select * from table1​

چون اسم جدول داخل ديتابيس من
table1
بوده.

بعدش هم ok كردم.

حالا مي خواهم datagrid خود را به ado متصل كنم.
پس روي datagrid كليك مي كنم تا بروم به پنجره پراپرتي و بعد صفت datasource را adodc1 قرار دادم.

بعد برنامه را اجرا كردم.
-----------------------------
سالک: درسته جدول در datagird نمايان است. دست شما درد نكنه. خسته هم نباشيد. عكسشم اينه:

a5.gif

.
 
آخرین ویرایش:

saalek110

Well-Known Member
من الان روي يك سورس كار كردم كه خيلي برام جالب بود.
طبق مثال قبلي كه زاپاتا جان توضيح دادند و با هم اجرا كرديم، يك شي ado را به يك فايل اكسس وصل كنيد.
بعد يكسري تكست باكس بر روي فرم قرار بدهيد. چون مي خواهيم بجاي datagrid از تكست باكس استفاده كنيم. صفت datasource تكست باكسها را adodc1 قرار بدهيد. و صفت datafield را برابر يكي از فيلدهاي جدول اكسس. نيازي نيست چيزي تايپ كنيد، وقتي كه صفت datasource برابر adodc1 قرار بگيره ، خود به خود در صفت datafield ليست نام فيلدها موجود است. بعد بي هيچ كدنويسي مثل مثال قبل ، محتواي فيلدها داخل تكست باكس ها قرار مي گيره. يعني هر چي داخل فيلدها بوده ، داخل تكس باكس ها ديده ميشه.
پس به تعداد فيلدهاي جدول اكسس خود ، تكست باكس بگذاريد و اين دو صفت را تنظيم كنيد.
حالا اگر مي خواهيد ركورد بعدي را ببينيد. يك دكمه بگذاريد و كد زير را اضافه كنيد:
Private Sub Command1_Click()
If Not Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveNext
End If
End Sub​
و براي ديدن ركورد قبلي:
Private Sub Command2_Click()
If Not Adodc1.Recordset.BOF Then
Adodc1.Recordset.MovePrevious
End If
End Sub​
و براي رفتن به ركورد آخر يا اول:

Private Sub Command3_Click()
Adodc1.Recordset.MoveLast
End Sub


Private Sub Command4_Click()
Adodc1.Recordset.MoveFirst
End Sub​

براي اضافه كردن يك ركورد: بعد زدن اين دكمه مقدار فيلدها(تكست باكسها) را پر كنيد. خواهيد ديد كه به فايل شما هم در هارد اضافه مي شه.
Private Sub Command5_Click()
Adodc1.Recordset.AddNew
End Sub​
Update و delete هم داشت. كه من ديگه ننوشتم. چون من قبل اين كه هر قسمت را بنويسم ، بايستي چك مي كردم ببينم كار مي كنه يا نه. و تا اينجا خيلي وقت گرفت. در سورسهاي بعدي اين دستورات را كار مي كنيم. ولي بي امتحان دستوراتش را مي گذارم.
Adodc1.Recordset.Delete

Adodc1.Recordset.Update

Adodc1.Refresh​
اگر مشكلي در پيوند دادن ado با اكسس ، يا تكست باكس ها با ado بود، بگيد تا بحث كنيم.
.
اين قسمتها را هم زاپاتاي عزيز زحمت كشيدند:


(.....,Adodc1.Recordset.Update Array(" FIELD1", "FIELD2",.....), Array(TEXT1.Text,TEXT2.Text
"عملیات پیچیده ویرایش رکورد مورد نظر شما با موفقیت انجام شد"=NOTE.Caption

اول رکورد یا رکورد های مورد نظر خودتون رو بدست میارید با روشهای قبلی بعدشم مینویسید
Adodc1.Recordset.Delete
.

می خواهیم با زدن دکمه ای رکوردی به دیتابیس ما افزوده شود و محتوای یک سری تکست باکس به عنوان ستونهای تیبل ما درج شود.کدش این می شود:

کد:
Private Sub Command1_Click()
    ' add a new entry to our table.
    With Adodc1.Recordset
        .AddNew
        !ID = Text1.Text
        !Field1 = Text2.Text
        !Field2 = Text3.Text
        !Field3 = Text4.Text
        .Update
        .Requery
    End With
    
    Adodc1.Refresh

End Sub

البته من زیاد کار نکردم تا متوجه اشکالات احتمالی بشوم ولی درست کار می کرد و دیتابیس ما در درایو سی رکورد به تیبل اش اضافه میشد.
فراموش نکنید که در تکست باکس ها مقدار درست وارد کنید. مثلا اگر نوع ستون عددی است رشته وارد نکنید.

a7.gif
 
آخرین ویرایش:

saalek110

Well-Known Member
omidak گفت:
سلام:
از ToolsBox 1 Object Data بزار تویه Form ات
بعد 1 تویه Properties اش اول Connect ات رو انتخاب کن بعد DataBaseName و بعد تویه RecordSource اون Table مورد نظر رو بده... بعد خیلی راحت هر Object ای رو که خواستی میتونی از طریق DataSource و DataField بهش وصل کنی... :wink:
موفق باشی :wink:

saman_sweden گفت:
در حالت كلي بگم شما بايد ديتا بيستان را تو اكسس بسازيد و در واقع تمام كارها با اكسس شروع ميشه وتمام ميشه اون برنامه ويژوال بيسيك كه ساخته ايد و يا ميسازيد در واقع بعنوان پوسته برنامه ميشود و كار خاصي انجام نخواهد داد

shakiba گفت:
درسته
اكسس تمام اطلاعاتي كه از فرم وارد ميشه را ذخيره ميكنه
منم در اكسس يه جدول ساختم و اون فيلهايي كه ميخواستم را قرار دادم كه بعد از وي بي اون باكس ها را به فبلدهاي جدول اكسس كانكت كنم.

saman_sweden گفت:
من عادت ندارم به سوالات وب پاسخ دهم براي اينكه وقت گير است در هر حال اين كد هاي زير كارتون را راه مي اندازه

براي ذخيره يه فايل و يا كانت به فايل از كد زير بهره بگيريد

کد:
Private Sub cmdBrowse_Click()
' Set CancelError is True
  CommonDialog2.CancelError = True
  On Error GoTo ErrHandler
  ' Set flags
  CommonDialog2.Flags = cdlOFNHideReadOnly
  ' Set filters
  CommonDialog2.Filter = "Microsoft Access Database (*.mdb)|*.mdb|All Files (*.*)|*.*"
  ' Specify default filter
  CommonDialog2.FilterIndex = 1
  ' Display the Open dialog box
  CommonDialog2.ShowOpen
  ' Display name of selected file
  dbFileName = CommonDialog2.FileName
  
  display
  cmdTable.Enabled = True
  cmdField.Enabled = True
  cmdAutoId.Enabled = True
  List1.Selected(0) = True
  List1.ListIndex = 0
  Exit Sub
  
ErrHandler:
  'User pressed the Cancel button
  Exit Sub

End Sub

Public Sub display()

Set db = OpenDatabase(dbFileName)

    ' Display the attributes of the Northwind database's
    ' tables.
    List1.Clear
    'MsgBox "Attributes of tables in " & .Name & ":"
    For Each tdf In db.TableDefs
    If Not tdf.Name Like "MSys*" Then
    List1.AddItem (tdf.Name)
    Else
    'MsgBox tdf.Name & "is System Table"
    End If
    
    Next tdf

End Sub

Private Sub cmdField_Click()

Dim tIndex As Integer
' Display the attributes of a TableDef object's
' fields.
List2.Clear
For Each tdf In db.TableDefs
If tdf.Name Like List1.Text Then
    For Each fld In db.TableDefs(tIndex).Fields
    List2.AddItem fld.Name
    Next fld
End If
tIndex = tIndex + 1
Next tdf
'List2.Selected = 0
List2.ListIndex = 0
End Sub

Private Sub cmdTable_Click()
Dim tIndex1 As Integer
' Count the attributes of a TableDef object's
' fields.
iFieldCount = 0
For Each tdf In db.TableDefs
If tdf.Name Like List1.Text Then
    For Each fld In db.TableDefs(tIndex1).Fields
    iFieldCount = iFieldCount + 1
    Next fld
End If
tIndex1 = tIndex1 + 1
Next tdf

rsFileName = List1.Text
frmTable.Show
End Sub

اينم فراخواني ديتابيس از داخل load بصورت اتومات

کد:
Public Sub Form_Load()
' By making it public makes it easier to refresh
Set dbConn = New Connection ' Prepares the
' Connection
dbConn.CursorLocation = adUseClient
dbConn.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source =  Database.mdb;"
' Enter the database name. This sets the db and
' uses the jet database engine to connect to the
'db
Set recSet = New Recordset 'sets the recordset
recSet.Open "Select * from Tables Order by Field ", dbConn, adOpenStatic, adLockOptimistic
'sql connecting recordset, and sets the sort by
'the field name you enter.
'Also NOTE: for more control replace the wildcard
' (*) with fieldName1, fieldName2, fieldName3.......
' For the other options you replace order bf field
' with where field = "string", where field in "string",
' or group by "string"    * Where string = the requirement you want to use
' Such as "group by Subject"
If recSet.BOF = False And recSet.EOF = False Then
    'if there is an entry
    recSet.MoveFirst ' moves to first entry
End If
recMove = True
recAdd = True
Call Display_fields
End Sub

omidak گفت:
سلام...
ببينيد ADO.Net خیلی با سیستم هایه VB6 متفاوت هستش... شما برایه تبدیل اون باید بخش DataBase و Connect اش رو بار دیگر بنویسید :wink: و همچنین شما در .Net هیچ مشکلی نخواهید داشت :wink:

omidak گفت:
سلام:
:)
من بهت توصیه میکنم این پرژه رو با 6 انجام بده... چون حقیقت اش اینه که .Net خیلی سنگینه...;) و میدونم به مشکلات زیادی بر میخوری...;)
نمیشه گفت که تغییرات زیاده یا کم... در بعضی جاها تغییرات زیادی دیده میشه بعضی جاها نه...;) اما اگر برنامت کامل شده دیگه نمیخواد ببریش تو .Net چون خیلی گیج ات میکنه;) :roll:

shakiba گفت:
:oops: :oops: :oops:
دستتون درد نكنه

يه سوال ديگه
من از Ado Data ,Data Grid استفاده كردم و به ديتابيسم هم كانكت شدم
كامل جدولي كه در ديتابيسم دارم را برام مياره
ولي نميدونم آيا بايد تك به تك فيلدهايي مثل نام و نام خانوادگي و ... كه در وي بي دارم
را به فيلدهايي كه با نامهاي مشابه طراحي شدن (تك به تك) بايد به ديتابيسم كانكت كنم

:?:

omidak گفت:
سلام:
اگر از اجزا Single استفاده میکنید...
باید اونها رو تک به تک نمایش دهید;)
اگر از اجزاء مثل Grid استفاده میکنید... بطور خودکار Column ها به راحتی به نمایش درماند;)
فقط کافیه که DataSource رو به اون بدید;)

اميدوارم بحثهاي بالا مفيد باشه.
آدرس تاپيك:

http://forum.majidonline.com/showthread.php?t=5282
.
 

sh_sepehr

Member
سالک جان دستت درد نکنه ! خیلی زحمت کشیدی !
ولی یه مشکل !!!!
من دیتابیسم رو در یک فرم دیگه نوشتم ! (مثلاً form3) ! حالا میخوام تکتس باکسم رو که در form 2 هست رو اونجا وارد کنم !!! ولی قبول نمیکنه ؟!!! تو DataSource تکست چی باید بزنم ؟!!!!
 

saalek110

Well-Known Member

a6.gif


من روي هر فرم يك ADO قرار دادم و به يك ديتابيس اكسس وصل شدم.
اجزاي هر فرم به ADO فرم مربوطه وصل مي شوند.
من ADO را پلي براي اتصال فرض مي كنم. و فرض مي كنم اين پلها ديگر شي هاي فرم را به ديتابيس وصل مي كنند. اگر درست كار كنه يعني اين فرض من درسته.
ببينيد درست كار مي كنه.
.
=====================
ضمنا نتوانستم تكست باكس اين فرم را به adoآن فرم وصل كنم. شايد بشه ولي من بلد نيستم. براي همين اگر من بخواهم در روي دو فرم اشيا را به يك ديتابيس وصل كنم ، فعلا روي هر فرم يك ado مي گذارم.
.
فكر كنم بايد از دستور refresh هم استفاده كني تا وقتي در يك فرم تغيير مي دهي در فرم ديگر تغيير رفرش بشه. البته كار نكردم و اصلا نمي دانم متدش هست يا نه ولي احتمال زياد هست.
.
 
آخرین ویرایش:

nima_dir

Active Member
دوستان سلام
طبق تجربه من ميخواستم يه توصيه بكنم كه به جاي استفاده از متد هاي ADO از دستورا SQL استفاده كنيد
با استفاده از دستور Execute
اگر SAAlAK بخوان من يه مثال اينجا بدارم و اگر خودشون دارن كه...
ممنون
از زحمات آقاي SAALAK هم ممنون
 

sh_sepehr

Member
اگر فقط سالک بخواد میزاری ;) (شوخی کردم)!
کلاً اگر بتونی در مورد کار کردن با Sql و دستوراتش و طریقهء کار در ویژوال یه توضیحی بدی ممنون میشیم !!!!!
با تشکر
سپهر
 

saalek110

Well-Known Member
راجع به
sql
هم من مي خواهم بعدا ياد بگيرم. خوشحال مي شم يك كمي ما را آشنا كنيد.
شنيدم دستورات قدرتمندي داره.
.
 
آخرین ویرایش:

nima_dir

Active Member
دوستان و عزيزان سلام
به روي چشم
من يه مقدار در مورد Sql و استفاده اونها در وي بي توضيح ميدم
فقط يه خورد طول ميكشه
شايد يكي دو روز
شما براي ما دعا كنيد مشكل ما حل بشه
ما هم به اميد خدا زكات علممون رو ميديم
ممنون
مراقب خودتون باشيد
 

saalek110

Well-Known Member
احسن و هورا.
من هم از الان دعا مي كنم.
.
زمانش هم مهم نيست . شما نگيد هم حالا حالا من خودم نمي تونم برم سراغش.
.
=================
پاسخ پست بعدي:
خيلي عاليه.
من رفتم براي تمرين.
.
 
آخرین ویرایش:

nima_dir

Active Member
با سلام خدمت دوستان عزيزم:
مي خواهيم يه مفدار در مورد دستورات SQL صحبت كنيم.دستورات SQL دستوراتي براي كار با ديتا بيس هستند كه مي توانند اطلاعات را از ديتا بيس استخراج كنند يا به آن وارد كنند يا تغيير دهند.
و اما مهمترين دستورات SQL:
دستور SELECT : فرمت اين دستور به صورت زير است:
SELECT [اسامي فيلدها]
FROM [اسامي جداول]
WHERE[شرط]
ORDER BY[اسامي فيلدها]
GROUP BY[اسم فيلد]
HAVING[شرط]
اين دستور يك سري ركورد را از ديتا بيس بازيابي مي كند.
در جلوي دستور SELECT اسامي فيلدهايي كه مي خواهيم بازيابي كنيم مي نويسيم. مثلا اگر جدولي داشته باشيم كه شامل فيلدهاي نام و نام خانوادگي و شماره باشد (فرض اسم اين جدولEMP) اگر بخواهيم فقط نام و شماره را بازيابي كنيم بايد به صورت زير عمل كنيم.
SELECT EMP.NAME,EMP.NO
اگرعمليات ما روي يك جدول باشد نوشتن اسم جدول الزامي نيست اما اگر بخواهيم اطلاعات را از چندين جدول بازيابي كنيم
بايد حتما اسم جدول را ذكر كنيم. اگر بخواهيم كل فيلدها را بازيابي كنيم جلوي SELECT مينويسيم * (اگر چندين جدل بود مي نويسيم EMP.*)
در جلوي دستور FROM اسامي جدول يا جداولي كه مي خواهيم از أنهااطلاعات بگيريم مي نويسيم.
در جلوي دستور WHERE شرطي رو ميگذاريم كه اطلاعات بر اساس اون شرط بازيابي شوند. كلا ما هميشه احتياج نداريم كه هميشه همه اطلاعات ديتا بيس را بازيابي كنيم.
ORDER BY بر اساس يك يا چند فيلد ركورد ست را مرتب مي كند.
GROUP BY اطلاعات را بر اساس يك يا چند فيلد گروه بنديمي كند به صورتي كه مقدار اون فيلد در هر سطر يكتا باشد.
HAVING يك شرط را داخل گروه بررسي ميكند.
دو مورد أخر فعلا مورد نياز نيستند. ان شائ الله يه كمي جلوتر مفصل توضيح ميديم.
مثلا ميخواهيم كل ركوردهاي داخل EMP را استخراج كنيم:
SELECT * FROM EMP
توجه داشته باشيد كه حتما لازم نيست دستورات را طبقه اي بنويسيم . مي توانيم خطي بنويسيم.
مثال)مي خواهيم اطلاعات كارمند يا شماره 12 را استخراج كنيم
SELECT *
FROM EMP
WHERE NO=12
مثال)ميخواهيم شماره و نام خانوادگي كامند با اسم نيما را بازيابي كنيم:
SELECT L_NAME,NO
FROM EMP
WHERE NAME=’NIMA’
فيلدهاي غير عددي بايد در داخل ‘ قرار گيرند.
دستورINSERT:
اين دستور يك ركورد را داخل ديتا بيس وارد ميكند فرمت أن بصورت
INSERT INTO [نام جدول] VALUES (FIELD1,FIELD2,…)
دو نكته: ترتيب فيلدها مهم است. و اينكه فيلدهاي غير عددي بايد داخل ‘ باشند.
حواستون باشه مقدار NULL به يك فيلديكه نمي تواند مقدار NULL بگيرد نسبت ندهيد.
مثال)
INSERT INTO EMP VALUES(‘ALI’,’AMIRI’,21)
دستور DELETE:
اين دستور براي حذف يك يا چند ركورد از ديتا بيس استفاده ميشود.فرمت:
DELETE FROM [اسم جدول] WHERE[شرط]
اگر كه قسمت WHERE را ننويسيم و اين دستور را اجرا كنيم همه ركوردها پاك ميشوند.
DELETE FROM EMP WHERE NO=17
دستور UPDATE :
براي تغيير يك ركورد استفاده مي شود.فرمت:
UPDATE [نام جدول] SET [نام فيلد]= مقدار جديد WHERE [شرط]
مثال:
UPDATE EMP SET NAME=’HAMID’ WHERE NO=21
دوستان فعلا فكر ميكنم تا همينجا كافي باشه هنوز خيلي مطلب مونده مثل دستورات ساختن جدول يا توابع جمعي يا SELECT هاي تو در تو و....
عزيزان براي تمرين اين دستورات در ACCESS يك جدول بسازيد و روي قسمت QUERY كلييك كنيد سپس گزينه
CREATE QUERY IN DESIGN VIEW را كليك كنيد يك پنجره باز ميشود از أن چنجره اسم جدول را انتخاب و روي گزينه ADD كليك كنيد سپس روي CLOSE كليك كنيد. ميبينيد كه در بالاي صفحه جدول شما اضافه شده در همان قسمت بالا جايي كه چيزي نباشد كليك راست كنيد و از منوي ظاهر شده گزينه SQL VIEW را انتخاب كنيد. يك پنجره مثل پنجره نوت پد ويندوز باز ميشود ميتوانيد دستورات SQL را داخل أن بنويسيد. وقتي دستور را نوشتيد چنجره را ببنديد .درهنگام بستن از شما مي پرسد كه مي خواهيد اين QUERY را SAVE كنيد روي YES كليك كنيد و سپس يك نام بدهيد
وقتي پنجره بسته شد ميبينيد كه QUERY شما اضافه شده با دوبار كليك روي اون مي توانيد QUERY را اجرا كنيد.
واي .. تا حالا اينقدر تايپ نكرده بودم
اميدوارم مفيد واقع شده باشه. براي ما هم دعا كنيد و براي سلامتي و تعجيل در ظهور أقا امام زمان يه صلوات بفرستيد
مراقب خودتون باشيد.
من بازم ميام
فقط دوستان اين قسمتهايي كه بوصرت كد هست رو برعكس در نظر بگيريد.من نميدونم چه جوري ميشه د گذاشت بصورتي كه به هم نريزه
مثلا select[نام فيلدها] رو بصورت [نام فيلدها] select در نظر بگيريد
نيما كوچيك همه
 

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

بالا