You are on page 1of 37

* ADO  

 *
              ! "# $% %&'
.( http://www.vba4a.com/vb/showthread.php?t=15 ) (!&    ) +
ActiveX Data Objects  !   /  01 2 3  4 " #5 6 4
/     "  <5= ; 37 8 1 9: / $    $4 ( ADO )
.Visual Basic > 39:

E 8 F Project 5D )A % 1&B / "&C5 ADO <=& %#; )@5?1


: HGI! >=5 G :J 1 A ! 8 K References G
'

Microsoft ActiveX Data Objects 2.8 )  4 > A5 &I  MG  :!
)1  & O1 8  E; K )&C 5 < =&5 6 4 % #;  5A ! N 5 D% K ( Library
 U1 A   V2  5A ! 8 D% HGI ! > A  4  5   @5 T6 4 /  Q,S G 7P
$  (!&    Microsoft Visual Studio 6.00
 2 8 1 )6 ! ( http://www.vba4a.com/vb/showthread.php?t=176 )
.X YZ E; /@51  "& W! @C5

: $1 5 ADO   @  [&  )+ ! $'W

. H   G I < 3I'J $% 8@A  ) \ ?1 : Connection


9 J ]      IA' $  9^_  ` A1 : RecordSet
.3 ^!  )7 / 3a_5 4 /@ 64 E% &:b 5! 
H  9  &  6 ' / @ 6 4  1&B /  )@5?1 : Command
.
9  :>  /  Command /@ < 51 : Parameter
.Stored Procedure EcV
? Y&=;  Query
\ #  4  5 Stream a  /@ / H> J )@51 : Stream
$  (!&    3 05!
.( http://www.vba4a.com/vb/showthread.php?t=50 )

:: 4 dA ::
( Microsoft ActiveX Data Objects 2.x Library ) <=&5 ` A1

.eD! ' 8' $  @ <5= 


 

    
x  *
.
!
: $'f ADODB  @ < e% 5  

** Connection 3I'J / **

/ ! ) ! g
  h  / ! 3I ' H  YC ;  3I ' 5 / !J .. eJ
 / @ 
  1&B /  C ; 8 1  5 /  T64 K  H 
T6 4 /  
_  6 :   a T6 4 / \1&I  > E@1 K Connection a
: $  A  3I'J YC; $% 
J a

Dim CN As New ADODB.Connection

: ADO 32 )' H>1V Microsoft &C $  (!& !  )@51 **

http://support.microsoft.com/default.aspx/kb/183606

H   :> H> =5   <   5 <h _ ' $  3 D  U2 <=&
/ @ 39 : /  ) +   H  < 3I'J YCj! J D' E i^1 K 
.  3I J    H D! 3I 'J $ % M _ 1 `6  Connection
> @ $ %  5 /@ 64 / H 1 = 2 YC; $4 3I'J YC; $% k Hh

: &:b m W! H&5 T64 l#&W  !_

Dim CN As ADODB.Connection
Set CN = New ADODB.Connection

Y  3I 'J 9  1 A'  4  A T6 4 YC ; ! l ; n A'    


oI
!  k K / D1& h! 3I'J 9 1 A' )@51 U2 K Open d
: $  >@ $% 5 ConnectionString 7
 95 T64

Dim strProvider As String

'For MS SQL Server


strProvider = "User ID= <# $ % ;>Password = < &'
)
;>Database = <)+,
-' 0
  %; >
Server = <0 34
5 2) +,
 % ;>Provider =
SQLOLEDB"

'////////////////////\\\\\\\\\\\\\\\\\\\\

'For MS ACCESS
strProvider = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data
Source = <0
  %">

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

'Open Connection
CN.ConnectionString = strProvider
CN.Open

  /  _   ; 3I 'J 9  oI


! J  5 > @ 64 $%
 7
  ; _ _ T6 4 oI
' 8 F strProvider $ 4
.Open d Y  &: Connection String

9 5 T6 4 & 1&5'  oI


! E@ % 3I'J 9 1 A  0 D1&h 
: $1 5 CN /@ !  Open d ; H&Z

CN.Open "UID= <# $ % ; >PWD = <)


; >'&
Database = <)+,
-' 0
  % ; >Server =
<0

 67 $ 9 % ; >Driver = ( SQL
SERVER )"

:: dA ::
 7
   Command / @  0 q& :k ADO   p ! ` A'
/ @  3I 'J  ! _   ;  D' $  Connection
.H&Z ADODB.Connection
< 
_ 5 8  > 0 3I'J 5= $% HG65 95 )   
.J; t \#  (D%  # /@ K ( > )6 < ) 9 T64 [62 i^1
  H D! 3I 'J N DD2  E @' / D!_  / D1& h q 2; "'!
/   H  / 3IJ )@51 3I'J 
 / Y J ! K HG65
: $1 5 Close d 39:

CN.Close

** 3I'J 9  **

1    ` A' ( 3I 'J _   ) 3I'J 9 Ej% e1 1G 5
G& 5  5 User ID 
_ 5 [&    5 C ' $   5 / 
T6 4  !  8 1 U 2 Database Name   H  8  Password
" ; "  BD5  7  9! I  8 D Y5 k / nu HG7 $% 95
:   5 /' ; n A' 3I'J 9 YC; 

 SQL SERVER  0  ! 3I 'J $ % i w&' $    H  " 


3I 'J Y& =; ) @51 .x  ... My SQL  ORACLE  ACCESS
 Driver  5 39 : /  ODBC yC  8  /' ADO h !
.Provider 5 5 39: / OLEDB >V 8  /'
5 C ' $   = E; ( Sign-In )  H D 3:  5 !
 Password G& 5  5 UID  User ID 
_ 5 8  8   
.PWD
H D  5 Server >
 5  5 C1  `6  H  <
  H  8   SQL Server  2 $ % ) + Database 
.MS ACCESS ! H  2 $% (D%

: ADO 3I' 9  0k p! \#1 $  >@

'For MS ACCESS
"Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =
C:\Books.mdb"

'or

"Driver = Microsoft Access Driver (*/mdb); DBQ =


C:\Books.mdb"

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

'For MS SQL SERVER


"Provider = SQLOLEDB ; Password = 0119777244 ; User ID =
Negm; Server = MyServer ; Database = Books"

'or

"UID = Negm ; PWD = 0119777244 ; Database = Books ;


Server = MyServer ; Driver = ( SQL Server )"

: $1  \# K >@ 64 / *


Ms Access   H D! 3I 'J 9  / ' 8 ' 3k 3 05 $ %
.OLEDB >V 
!
Ms Access   H D! 3I 'J 9  / ' 8 ' $ 0 3 05 $ %
.ODBC yC 
!
SQL   H D! 3I 'J 9  / ' 8 ' U 0 3 05 $ %
.OLEDB >V 
! SERVER
SQL   H D! 3I 'J 9  / ' 8 ' & :k 3 05 $ %
.SQL ODBC yC 
! SERVER

 ODBC yC  
  4 3I 'J 5 )C;   )'G : 2
Provider  5  Driver  5  5 /  ! )+ OLE DB >V
Open Database HG  eGI : ODBC &  ' U 2 K e   549@ t 
. 6 H>=5   9yC5   D' $4 Connectivity
.E@P G  e5> 
! 7?1 6 K  D! / z 2 $% OLE DB 

**  G I 8  
 **
8  
 ) @51 K   / N 5 H&0@! 
   / 8w& 
/   3I 'J _  /5 # Data Source Name ( DSN )   G I 
: $  >@ $% 5 ODBC ! G I

CN.Open "DSN = LocalServer ; UID = Negm ; PWD =


0119777244"

( D% ` A' $ % .1y h_! >@ 64 $% 3I'J _ E% q&' 5
 ! G I   D! /1V
' 8' U2 G&5 5 
_5 8  DSN 
$  \ % K ) 2   ODBC  ! G I  > P .i A   [&?5 ODBC
& : 8 F Administrative Tools   (y # 8F Control Panel 8@A  2
ODBC Data Source H6 % )  &O ) + ! Data Sources
8 1 U 2 3I 'J  ! 3 :>; $ % 
 ) @51 $  Administrator

_ 5! User DSN o
1  5! /
_5 <5^ System DSN oI
'
: )! g: ODBC 3I' 8  YCP   GI &O ... (D% $A
T 1 A !  5 3 05 $ %  4 K   H  M&A " 1 A ! 8   HGI $%
T> HGI $% 5 SQL Server l 

) ! g
 yC 5 8   4 K ODBC Name /  !  5 K    HGI  $ %
>
  ! )6  K ODBC 9yC   5 /5 # !  5% &O `6 
. H D {| _5 ( &%&_ )
 5! : $ 'f } 2J /@ K >
 3:   3I'J ! 1 A ! 5   HGI $%

  4 K 3k : /1G : 1   % MS SQL Server <   5  
G& 5  
_ 8  
J "> J Windows NT Authentication
> I ! /A % $ 0 G 
   ... HGI !  4  5 ( ~ ) 8 G G  :J G  : )@51 6
8  3 :>;   ih  6   SQL Server Authentication 

.HGI / (  ) 8G YV^! 4 5 G&5 5@ %#P! 
_5
.  HGI! \# 4 5  H  8  & :
(y|! 8 K q&: H6% &O D!_ HGI $% 5 Next    (y| !
l% (y#% TC; 8' 5! &1&D' &O 8F &y' 1 z 2; E> Finish   
: H6% T64 &O  OK  5 

.&  }29  K "#5 64 $% 0 HGI! D!_ HGI GD5! 8

** Execute d 
 **

$ % 
_' $  Execute d  Connection /@ ` A1
/  9^ "=& ! HG  T64 N +; . G I  SQL HG yC'
oI
'  1&B /  H 1 Z B_! 9^_ T64 
 )@51 K  G I
9^  5^ /   ; Execute  d /   ^'&5  5D
.RecordSet Object
:: dA ::
/  & 0 39 : /  [  t   ; 3 7 ) @51 K ADO <   5 
/  `  1&B /  46 ' / @51 $    "=&   5 ) + 3 0 . D1&B
  ` A1 U 2 Connection  Command  RecordSet  @
. H  /  "=& J d  8

eJ 8  K  l=&  $% Execute d 


  \# 
Students.mdb 8 J! MS ACCESS ] &! 39 : /   ! H  YC j!
3 D2  F9F   3 ^ 6 4 ` A1 E   8 J t ! 2 3 =   { #
:   h
 <!' K St_LName  St_FName  St_ID

`>  $  "&C  YC j! 8  8 F K Visual Basic 6.00 &1 h' a! \ %
.Standard EXE
.( ~ ) 8G HGI! \#  8' 5 K ADO @ <=& %#j! 8
 ; 90  l 5_ '  >k  7 / ( ListBox ) >& <!& %#j! 8
.lstStudents
 >k   7 /  ( Command Button ) &    % #j! 8 
Run  ; ( Caption ) l  & y ! 8  cmdLoadList  ; l 5_ '
.Query
: !_ &k  5! g
 Click z A ; $  >@ %#j! 8

Dim strConnect As String


Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset

CN.Open "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source


= Students.mdb"

Set RS = CN.Execute("SELECT * FROM STUDENTS")

Do While Not RS.EOF


lstStudents.AddItem RS!ST_FNAME & " " & RS!ST_LNAME
RS.MoveNext
Loop

RS.Close
CN.Close

Set RS = Nothing
Set CN = Nothing

: $  (!&  / l5A' )@51 ... 305 7 


( http://www.vb4arab.com/vb/uploaded/13807/01249069849.rar )

/ @ $ 5 ' $  Execute  d Y  8 ' !_  > @ $ %
$  RecordSet 9^ 5^ "=Gj! 4G ! N U2 Connection
H5_ 5  1G&@   DA  HG  
 8 ' ) + ! .RS &y 5 !  1V
' 8 '
; l5G iB  8  %#; 9^_ 5^ 39: M&A  DO .. LOOP
.ListBox l  [&?1   >&_ "&

 D' J $  SQL G 6  Execute d 


 e|1 )@5?1
 D1 `6  $  > @ $ %  5  % #;  9^_  [6 A 9^ 5^ "=Gj!
: 9^_ 2 [6A!

CN.Execute "DELETE FROM Students WHERE st_FName = 'Asmaa'


AND st_LName = 'Mohammed'"
** 9^_ 5^5   k 5 **
** RecordSet **

 #   H  /   3IA    5% %&'
/  [ 7   4G ! ` A' $  RecordSet 9^_   5^ /  :>
6 ' 39 : /  ) +   H  3 = / &0  3 = :> H>=5 
E J; 3 = /  & 0   5 C 1  5!G 9 J E /  8w&   .9 J 2
  ` A1 ( D% 2 3 =  W ] & _ !  ' ^' 9^_ 5^
 5 K 2 ^ 3DA / 5^  @C' U2 K 
5 5 3DA Y5 
.^' 9^_ 5^ /1@   9^_ <5^ '

RecordSet 9^  5^ YC;   [& ! $1 5% D
.Visual Basic > 39: / '9^ &

** 9 J 
! 9^_ 5^ YC; **


! RecordSet / @ Y  YC ;     5%  5'
 5^   ` A1 / @ 6 4 E J; ConnectionObject.Execute
< 5= <  3 A  4  5 .  "=&  $ % 
_ 5 oI
 { d / 
E   RecordSet / @ /  H 1 =  2 YC j! J  D' E i ^1 @
: $  >@ $% 5 l
! D'

Dim rsStudent As New ADODB.Recordset

9^_  G I  3I 'J { 1&  / @ 6 4 oI : 


 )@51 )+ !
oI
! 8  K Recordset / @ ! G I /  .9^_ 5^ "
 5 ActiveConnection  7
  ; 3I 'J _   3I 'J / 
: $1

rsStudent.ActiveConnection = CN
'OR
rsStudent.ActiveConnection = "DSN = Students"

: U2
G I   ; &C 1   3I '  05' CN E >@ / 3k &h_ $% & ?1
. / A# 5 
/  YC ; 8 1  A T6 4 $ % 3I' _ 
 8' $0 &h_ $%
.e5# 3I'J

Y 5 RecordSet.Open  d 
 $  > @ \ #1
/  YC ; J 8 1 U 2  ! RecordSet 9^_   5^
> =5 ( ListBox ) >&_  < !&  ; l '! % #; 8 F 1 = RecordSet
8 F !_  n+ 5  7 t! $A h  1 = n+5 %#j! 8 .n+5!
:  5 n+5! >=5  5 Click z A Y&=; $% $  >@ 3:>j! 8

Dim strConnect As String


Dim strSQL As String
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset

strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data


Source = Students.mdb"
strSQL = "SELECT * FROM Students ORDER BY ST_ID"

CN.Open strConnect

RS.Open strSQL, CN, adOpenStatic, adLockReadOnly

Do While Not RS.EOF


lstStudents.AddItem RS!ST_ID & " : " & RS!ST_FNAME &
" " & RS!ST_LNAME
RS.MoveNext
Loop

RS.Close
CN.Close

Set RS = Nothing
Set CN = Nothing

: $  (!& / 305 5A' )@51


( http://www.vb4arab.com/vb/uploaded/13807/01249070053.rar )

E@ K !_  T>   ! @!  5 `6   h   ] & )yC ' !


: HGI $% $1 5 ^ 

** 3DA 1 A Gd; **

 5^ /  3 DA  !   3IA $% >k !_ >@ $% 



>  $ 4 3 D2  F9F " =Gj! SQL HG  N  U 2 RecordSet /@ 3D2
  Q   ~   i '&     6:W' &:k 8 J 3k 8 J ih
/ @ <   %  5  >k /  J ! 3 DA Y5  
 ) @51 / @ .i '& 
!_  > @ $ % 3k  DA  5 "=&  )@51 )+  .Connection
: /   / yI / ` 
!

RS.Fields("st_ID")
'OR
RS.Fields(0)

** 9^_ 5^ :> D  **

9^_   5^  ;   G I  /    " =Gj!  D' E !


1 ' $ A ^_ ! H> =5 3DA 8 ; 37 )@51 RecordSet
{  N     5 9^_   5^ GI ' ) @51 .D!_   0k $ %  1G  5
$  .{ 5 6 4 :> E@5 &Z / HG $A ^_ E@1 N ` $% K 1B
K  ^' 9^_   5^  :> H> =5  
5 9^_  <   5 <h _ 
: $A ^_ &y    3D J {d 
 )@51

 5^5! 3k ^_   ; 3D J $% i_ ' : MoveFirst d


 ; ( BOF ) GI : &C 1 .eH& Z ( BOF ) { 5  1 !  9 ! 9^_
.Beginning Of File
 5^5! & :k ^_   ; 3 D J $ % i_ ' : MoveLast d
 ; ( EOF ) GI : &C 1 .eH& Z ( EOF ) { 5 1 9  9^_
.End Of File
 5^5! $  ^_   ; 3 D J $ % i_ ' : MoveNext d
.EOF {5 9 2 9^_
!_  ^_   ; 3 D J $ % i_ ' : MovePrevious d
.BOF {5 1 ! 9 2 9^_ 5^5!
/  e  >  { 
    3 D J $ % i_ ' : Move  d
.9^_
:: dA ::
 1  1 !  D \ #' $  oI
   EOF  BOF /    & '
.i'&   9^_ 5^

** $A ^_ &Z " /' **

9^_  / !  D  { d /  / d 


! D!_ 0k $% 5
 DA 
  5 MoveNext  d MoveFirst  d  54
9^  5^  :>  k  ; M& A  Do While Loop  1G&@ 
 :> True  5D G d ) +  J>  5^5 T6 4  1  ; I  2 2 
 d 
! !_  > @ $ %  5 +; / @ .EOF  7

& J ! Compiler 8=& 5 D_ % MoveLast  MovePrevious
Cursor U A5 "  A 7   ) +  5 W h
  G G d; G   
& k U A H6 % $ %  5 $ A E @5  ; TG  &C 1 `6  
_ 5 Type
 7
  5 /  ! 8 D 8   k .e 5' ( DOS )
 #& %J   5 
 8 1 K Recordset.CursorType
 MovePrevious  d 8 ' J $  adOpenForwardOnly
.MoveLast

$ 5 3 0 39 : /  9^_  / !  D  { d 


 \# ! $1 5% D
:   h
 $ <!' .. (_!

.yC  Y ! n+5 l= < $A h  ; 1 = n+5 %#j! 8


.>k  7 / ( ListBox ) >&_ <!& %#j! 8
  7 /  e| 1 ( 3 Command Buttons ) &  \'   F9F %#j! 8
.>k
.n+5 ; >k <!& / ( TextBox ) o <!& %#j! 8
lstData ; ListBox  8  &y ! 8
cmdPrev ; G_   5 8  &y ! 8
cmdNext 8 J ; ( k  5
cmdJump /51k  5
txtJumb ; o <!&

: @C 6! 85I  )1  &O1  2

8  n+ 5    @ Y5  & y'  5' " ' D!_  ZC  85I ' !
: $  >@ ! @!

Option Explicit

Dim RS As New ADODB.Recordset

Dim strConnect As String


Dim strSQL As String

'--------------------------------

Private Sub cmdJump_Click()

If Int(txtJumb.Text) > RS.RecordCount - 1 Then


MsgBox "Sorry !! it is an invalid Position"
txtJumb.Text = ""
txtJumb.SetFocus
Exit Sub
End If

RS.Move Int(txtJumb.Text), 1
Call Display_Current_Record

End Sub

'--------------------------------

Private Sub cmdNext_Click()

RS.MoveNext
Call Display_Current_Record

End Sub

Private Sub cmdPrev_Click()

RS.MovePrevious
Call Display_Current_Record

End Sub

'--------------------------------

Private Sub Form_Load()

strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data


Source = Students.mdb"
strSQL = "SELECT * FROM Students"

RS.CursorType = adOpenStatic

RS.Open strSQL, strConnect

Call Display_Current_Record

End Sub

'--------------------------------

Private Sub Display_Current_Record()

Dim i As Integer
Dim s As String

If RS.BOF Then RS.MoveFirst


If RS.EOF Then RS.MoveLast
lstData.Clear

For i = 0 To RS.Fields.Count - 1

s = RS.Fields(i).Name & " : " & RS.Fields(i).Value


lstData.AddItem s

Next i

Me.Caption = "Current Postion = " & RS.AbsolutePosition

End Sub

: (!& / l5A' )@51 &Z @C! 305 / H> 9 


( http://www.vb4arab.com/vb/uploaded/13807/01249081503.rar )

:: 4 dA ::
/  
 E>   H D H& Z 3 7!   5%  5
H  <      D1&B /  & 0 ) <#  2 $ e 5 )+ K Connection
.

Static / U A 
!  ! 5^ YCj! !_ >@ $% 5
 7
 adOpenStatic  5D oI
! ) + Cursor
t @   /4 ^'J 9  $ % 9^_  /! D ! \5_' $  CursorType
   D ! \5_ ' $    / 4
 $  adForwardOnly 5D
5_ 5 $ & Y& =P YC j!  5 ) + ! .( D%
BOF /  7
 G  :  % 8 1 $  ( Display_Current_Record )
 1y 1G& # H h
 T6 4 .$A ^_ 3D2 8 Y5  &  J EOF 
$ % W h: z 2  ; `>1 $A ^_! >= &w D2 ; 37 A EJ )+
.3I'J 5
 4 Form3 1 ^ n+ 5  ^' E _ ' J !_   h  yC ! 8
: HGI! 5 ]  IA' h  )yC'  KyC  Y ! n+5
** 9^_ >   3IA **

 7
 Recordset / @ 2I 5   oI
 / 
/  8w&   % . 5^5 9^ >  "=& J 
_ 5 RecordCount
K   1 ; 5^5 1 ! / 9^_ >  m_A EOF 7: 
 @;
$ % 5 ^5 h: / 1  &%1 RecordCount 7
 
 E J;
: $  >@

rsBooks.Open "SELECT * FROM BooksData"

If rsBooks.RecordCount = 0 Then
MsgBox "No books entered yet !!"
Else
MsgBox "Number of books registered = " &
rsBooks.RecordCount
End If
** 9^_ 5^ \Z&' u&% **

 ^' 9^_   5^ \ Z&  WHERE HG  


 8' 5 )@51
9^_  T6 4 u&  ORDER BY HG  
 ) @51  5 K SQL HG  / 
. H D! H>=5 3DA / &0  DA e' e e'&' '&'

$  Sort  Filter /  7
   Recordset / @ ` A1
U 2 K 
_ 5 SQL 9  $ % & y  E> D!_   5 t  Y>  @51
3 DA 8 D! I I
! 9^_  i '&  Sort  7
 
 ) @51
: $1 5 " , " 9! I i'&  $% 
_5

RS.Sort = "State , City , FirstName , LastName"


RS.Sort = "Age DESC , FirstName"

 e u' i '&  E    +; / ' ) @51 K ORDER BY HG  $ %  5



 | 1 ) @51 .$u   i '&  <  DESC  5 
 39: / e1 I'
: $1 5 WHERE HG 
 D1&B t! Filter 7


RS.Filter = "Age > 20 AND FirstName LIKE 'A%'"


RS.Filter = "State = 'EGYPT' OR State = 'KSA'"

:: dA ::
8 1 l% 5; 8 > ; Sort  Filter / 7
 / ` /' 
& y  t @' $  e D' Recordset 9^_   5^ 1 A U1 A'
.H 1 ^

** 9^_ 5^ :>  &y' **

 #&     H  /    3IA  N%& E !


+j % K   T6 4 U1 A'  & y'    [&  Ef `G&| / K n+5 
& y' H 1 Z _ ! ) @51 K AA 7 HGI ! 9^_   5^ > j! N 5
^_   ; 3 D J  4 l ; n A'     .  H D! H>=5  A  
 '! U1 A' $% iw&' $  3DA / D2 @ H 1 = 5 oI
' 8F mh5
  H  $% U1 A  }A / a_5 d  Y&=P Y  8 1 e&:
: $'f 305! 5

Rs.Fields("FirstName").Value = "Asmaa"
Rs.Update

t  " '! Recordset / @  ; H 1 = 9^ % #; )6  )@51


: $1 5 %#; H 2 Hh: < D!_ h


.AddNew d Y 


.3DA 8D oI
'
.Update d Y 

: Student 3 = ; 1 = ^ %#;  $  >@ \#1

.Recordset
Dim RS As New ADODB.
Dim strConnect As String, strSQL As String

'Open a recordset

strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data


Source = Students.mdb"
strSQL = "SELECT * FROM Students"

RS.CursorType = adOpenDynamic
RS.Open strSQL, strConnect

RS.AddNew
RS!st_ID = 8
RS!st_FName = "Abdo"
RS!st_LName = "Negm"
RS.Update

RS.Close
MsgBox "A new record has been added successfully !!",
vbInformation

$  3DA 8D oI


' i^1 K SQL INSERT HG < )6 3A 4 5
.Wh:  G &O' J; wG% 8 Null D _' J

:: dA ::
9^_  3 D2 8  / ' ! Update  d Y ! 8 D' 8  +;
nG>  '! i46    H   ; 9^_  T6 4 % #; 8 1 / % H 1 ^
/ !  D  { d /  ` 
! &:b ^ ; 3D J >&^5! ED1 5 1&
. / &+ $  9^_

 d 
! 9^_   5^  :> $ A ^_  [6 2 e| 1 ) @51
: $1 5 Delete

Rs.Delete

6  K $ A ^_  e>= M4 \I1 J ( Delete ) d T64 Y  >&^5!
  9^_  / !  D  { d q 2; Y ! T64 [6A 5 iD' E i^1
.3DA 8 ; 37 A
** ADO $% 9^_ /W'  **
 A % 6  K ( D% HY& D e #& % ADO 9^  5^ E @'
>G +j % .W h:  G G d $ % i_ 1  A T6 4 $ % 3DA 2 5 oI
'
q& :  5 /  ! J  D' E )  i ^1 K 9^_  [6 2  & y'  % #;
$ %  5 
_ 5 9^_  /W ' " 1 A  
_5 LockType 7

:$  >@

RS.LockType = adLockOptimistic

+; )  H 1 Z B_ !  !=P . 7


 T6 4 54 q  / Ef 3Y_ ' )
  E @' E i ^1 K /
_ 5 H>    ! H  $% 9^_ 1  ! N5
<  $ 1 `6  Record Locking 9^_  /W '  5!  %  1G>
  H  $ % > =5 ^_ t $ 1   A / /1&:f /
_5
LockType 7
 39: / 9^_ /W' $% 8@A  8 1 6 .N t $%
:  8D q 2;  ` A' E /@51 $ 

 5^  ! /  !  D' : ( adLockReadOnly )  5D

. (D% HY&D 9^_

$C  /W  &% ' : ( adLockPessimistic )  5D

. l1 ' YF 9^_ /W' $1  4 9^_

9^_  $   /W  &% ' : ( adLockOptimistic )  5D

)  ` .. ( D% Update d Y   9^_ /W' $1  4


T6 4  h' <h _ ' /  ) @ )   A1  5 9^_  1 ' <h _ '
 5^ t  & :f 
_ 5 $  1  2   H    91  
.  5 $% Y J / 9^_
/  & 0 U1 A' &% ' : ( adLockBatchOptimistic ) 5D

. UpdateBatch d 39: / N t $% ^

& y' H 4C 5! 7


 hD ; ADO 32 U1 A &^1 e|1 )6
 5' $  @C Dh  <   $% 3 ^ &Z 1 A'  /1&:f
. PC u= / &0 
** ADO /1&:f &y' H 4C **

39 : /  ; 37 8 1 ` /


_5 H>   ! H  < 5 
.)'9^  5^ :> H>=5  > / W  i^1 K  A / @Z
/ ! 3 D J  5 D'  5!G CursorType  7
 E eD!  &+  5@%
  
_ 5 & Z5 "  1 A' $ % _ &  hD 5 ' )+  K 9^_
. H D! H>=5   k ! 9^_ 5^ 'G 

..  3  [ CursorType ] 7


 
5 8D \# $1 5%

"=&  <1&_  
_ ' : ( adOpenForwardOnly )  5D

T6 4 / H> J )@51 ... 9^_ 5^ :> (D% k ; 
 ComboBox / a  D1&h T6! 3 ^! 3I'J \ % $% 5D
H&6  $ % ^_ !   2J  ; =2 $% E@' / )k K .xListBox ..
 ; 3 D J ^_  HY&  >& ^5!  D1&h T6  )
! K l 'Y& !
{ 
1  5 H&6  /   5= D!_  9^_  [6 2 8 1 l $  ^_
. u^ H&+ $% 5 Y

& y' p ! H 4C  ) ^& \ ' : ( adOpenKeySet )  5D

   5  2 $% > @ K /1&:f /


_5  / 8 ' $  
. $5 2  >


& y' < 5= H 4C  ) ^& \ ' : ( adOpenDynamic ) 5D

. /1&:f /
_5  / 8 ' $  

H 4C   5D T6 4 39 : /  /@51 J : ( adOpenStatic ) 5D

 D1&B N
  ) k ) + K /1& :f /
_5  / &y' `
$ % D1&h T64 0 
 )@51K  ( /_ ) $@' J \ 
. &1GD  7 YC;  e90 \ 
< 5=   /   H  "  9^_ &Z5 2 5 8D " 5 1
5D E@' K 305   Ms Access ! H  2 $% . 
HY& D 
_ ' $  adOpenForwardOnly $ 4 & Z5  #& %J
adOpenKeySet & Z5 
 | ?1  5! K   H  /  1&_
.q&:k &5 5 U1 A  5 2 $%
** Command &k / **
<     $ % N  8 O $| D' ) % K  / 5^ < 5 
T6 4 "=&  >G   +; / @ .Recordset  a  / @ { d oI :
/5| ' )  \ 1 `6  ADO Command 
 /  w J E ^ _% K 
 4 E@1 $ ! H& / &0 
9 ! / :> EV
 SQL Y&=;  9 
9  /1V
' 8 1 .H 1  &   5 /   5 6 ' >G +; $ 05  A
/ @! g
 Parameters < 5^   :> EV
5 Y& =P  9 J
T  l '9 & y' ) @51 / @ 64 > ; / $  E ! .Command
.H& / &0

$  SQL HG   ; $ &O K Command /@ 


  \# 
: "A" [&A! 3k 85   1 /16 h <5= "=& ! D' $ 

SELECT * FROM Students WHERE st_FName LIKE 'A%'"

Ms SQL Server " / ! H  :> EV


 Y&=; ; HG 1A ! D
: $1 5 )+ l_! 3k [&A 1 A ! 
_5 D1 $

CREATE PROCEDURE spSearch


@strSearchLetter char(1)
AS
SELECT *
FROM Students
WHERE st_FName LIKE @strSearchLetter + '%'

 ?1    EV
5 Y&=P ! TG :; Command / @ YC ; ) @51 ) + !
& 1&5' Ms SQL Server  ! H   :> > =5 Stored Procedure
: $  >@! 5 Y&=P )+ $% mh5 5 5

Dim CN As New ADODB.Connection


Dim RS As New ADODB.Recordset
Dim Cmd As New ADODB.Command
Dim Prm As New ADODB.Parameter

'Open a CONNECTION to the database


CN.Open "Provider = SQLOLEDB ; Password = 0119777244 ;
User ID = Negm ; Server = MyServer ; Database = Students"

'Setup the COMMAND object


Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "spSearch"
Cmd.ActiveConnection = CN

'Setup PARAMETER object


Prm = Cmd.CreateParameter("@strSearchLetter", adChar,
adParamInput, 1, "A")
Cmd.Parameters.Append (Prm)

'Setup the RECORDSET object


RS.CursorType = adOpenStatic
RS.LockType = adLockOptimistic

'EXECUTE the command


RS.Open Cmd

6 4 $ % 42& Z $  ADO  <5=  ` A1 >@ 64 E% q&' 5
 @ /   5^   Command / @ ` A1  5 .Ef  2 " #5
YC ; ! )@51 .EV
5 Y&=P :>    051 $  Parameters
  >  39 : /  q& : H&    95 T64 Y 2 Command /@
: $1 5 >@ &h  /

Cmd.Parameters ("@strSearchLetter").Value = "A"


RS.close
RS.Open cmd

 & k 9  & y' ! q& : H&  9^_   5^ \ % H>; 8 1 >@ 64 $%
.A [&A!  ' $  Y5 k <5= "=&  8 1 U2 Command /@
:: dA ::
 5' $  Execute  d   e| 1 Command / @ ` A1
.Connection /@ $%  05 !C D1&h!

** I5 9^_ 5^ **

/  3V5! H&6 :> 5' $  ` I5 9^_ 5^ z A  8'


H 2    O2    5^ U1 A' )@51 U2 K 2I5  H 
  H  /! ! /V  DA' )6 N2 E; Storage Device /1V
'
 Disconnected Recordset I 5 9^_   54 & O' . !  5%
 D'  D  T6 4 /@ K /
_5 [Jb 
_1 $  H&@  < 5
.!h5 ]  & & $% 1V' 3I'J N /

/    H  /  Recordset 9^_   5^ I % ) @51


CursorLocation  7
 adUseClient  5D oI
'  1&B
 = ) H&6  $ %  ( >
  = )  H  $% E +; &Z5 E@ > A' $ 
: 'f h
 "'! I5 9^_ 5^ YC; )@51 .( 5

. 1 = Recordset / YCj! 8


 7
 adUseClient  5D oI
! 8 
.CursorLocation
  H D! 3I 'J 39 : /   ! Recordst / @ Y 5! 8
.2&Z E  5 Open d 
!
ActiveConnection  7
 Nothing  5D oI
! 8 
 5 )+ . H  h  /! 3I'J H I%  h' 8 1  2
: $  >@!

Dim CN As New ADODB.Connection


Dim RS As New ADODB.Recordset

CN.Open "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source


= Students.mdb"

RS.CursorType = adOpenKeyset
RS.CursorLocation = adUseClient
RS.LockType = adLockOptimistic

RS.Open "SELECT * FROM STUDENTS", CN

RS.ActiveConnection = Nothing

** >@ 39: / 9^_ 5^ YC; **

H  /  Recordset 9^_   5^ Y   /  8w&   


 5^ YC ; <h _ ' )  J; K H 1 Z B_ ! _ ! ! H>= !
8 F 1 = Recordset /  YC ; 1&B / >@ 
! 1  / 9^
{ d t  
! 9^_  % #; e& : Fields 3DA 5^ YC;
YC j! D  K      &y 7 3 05 $  > @ <! ' .eD!  4&+ $ 
/    ! )+ Age  Name 54 (D% /D2  ` A' 9^ 5^
: ! H D >= `

Dim RS As New ADODB.Recordset

'Create Structure
RS.Fields.Append "Name", adVarChar, 25, adFldIsNullable
RS.Fields.Append "Age", adInteger, , adFldMayBeNull

'Add a record
RS.Open

RS.AddNew
RS.Fields("Name").Value = "Ahmed Negm"
RS.Fields("Age").Value = 22
MsgBox "Data has been saved successfully !!",
vbInformation
RS.Update
 5' Ef N K   /   e ! ) 4 >@ 64 $% 1 ^
N :>  ) 0% mh 4 5 hD T64 NG> +; .. $I
C Mu= H&6!
e 5> > '  U 2 e_   7 E @'  H& @ E 8  K /%& A5 [I 
  {  :  < #  4 / @ K ! H D %#P! CN / < RS 

YC j!  5 D% K 9 BP   "  ` / ! H D &  8 4 /A% [9 :J
`6  u ^ H& + 4 T>= E@ $54 3 = 4 9BP  1 = " / 3 =
& B ) @j! / @ ) + /  & 0  hD T6 4 /  z A  <h  / .. l 5'
)_ ! 3 ^!     &A ( !G 8_  $ % q 5   MG_  

  4 > @ 6 4 $ % | 1  1 = & d  5 .. )_ ! 3 ^% 8_ D!  A5
/  & 0   ` A'  5^ ; D2 %#j! D' $  Append d
   0 l' 7 p ! )6   DA 64 3B l'! " DA 8  0 
 @;  K adFldIsNullable  7
 )  ! Null  5D 3D 
 DA $ %  5 K adFldMayBeNull  7
 )  !  wG% 8  3D 
.i'&   Age  Name

  XML _  ! {   :> 9^_   5^ } 2  4 K 4 e 1 = = 5


: 305   $  >@ 
! iI g&D

RS.Save "C:\TempTable.xml", adPersistXML

 1&B /  q& : H&  l % }?2  {5 64 


 B_! @! )@51 5
: $  >@

RS.Open "C:\TempTable.xml"

**  H  U1 A' **

   > / @ ..   6 ADO  5 $% :> D% K  ! /1 / `G> J


 D m @  4   i _  ( D% ! 7 /   !D1  5 l ! J `>  @C !
/  /
_ 5  5^ < 5 9^_  /W'   )+  %&' .. lDh !
: $  (!&    " #5 64 C 8' K N t $% DA t <  
T& + 8 '  5  http://www.vba4a.com/vb/showthread.php?t=71
<   5  & :   9^_  / '   6 :W1 ) + /  8w&    /@ .eD!
 D' )6 ! N W% K   H D! 9I  / @' 8  +j% .I5 9^_ 5^
N 5 +j % .  @5  :> i @ / 5^ ; &O' N  5 9^_ ; &O!
H    & y  T6 4 t@' /% K 9^_ 5^ ! 1 '  U1 A !
.9^_ T64 ^_ ! D'  2 

) W! 
' .. 5 T64 &D' H& 3 N +; m&h|1  ! )D EW! &Z
6 4 Y w & 0k  @A \I5 q 2; $% {ZGk 8_D! 1 = {d5 )' 8'
 k $#5 &C! 7
  ^_' ) M&1  ) 3 305  
  @A AI 5 $ % ) 5 u ^; <h _' 8 N )54>  K ! ^_' 8
$ % ) 5 V ^' $  3V 5  5  5 6 : M&1  /  NB )5 N YF
q& : H&  5 T64 6: / !J ) 4 @C5 /@ K Wh: J nu; E ! Y 4
: $^&! 9@ 64 8=&  $ 3' .q&: H&  $% # {ZG 4u^; !

$  ADO  ; & k Y =Gj!  k K / D1& h!   H  U1 A' )@51
8 %  0  D1&h /    K Batch Update  5^?5 U1 A   5!  D1
Y ! I 5 9^_   5^  :> ^  ^5! >@ 39: / 1 1
 B: H&O YDj! D $1 5% .i2I5  H  ^ U1 A  EcV
? Y&=;
./ D1&h /  

** 9^_ / 5^ U1 A' **

 5^   & y  /  1  Y& =; 9^_  < c5^?5 U1 A  )  \ 1


 d 39 : /  H 2 H&  2I 5   H     Dh' 9^_ 
 5D oI
' i^1 K d T64 
 / /@5 ' $@ .UpdateBatch
 5^5!  7
 LockType  7
 adLockBatchOptimistic
: $1 5 9^_

RS.LockType = adLockBatchOptimistic

: 'f h
  U1 A  2G 5 C' )+ 

: $  >@ $% 5 I5 9^_ 5^  &y  Y&=;

RS.Fields("Name").Value = "Ahmed Negm"


RS.Update
' >@% A  ;)
=
 >& ?
 ;)
B C  &D0 -' D
=
 E+ FG
 H J =&
0
  ,K

RS.MoveNext
RS.Delete

 5 3I 'J /  oI


!   H  <  3I 'J (C ' H> ;
: $1 5 ActiveConnection 7


RS.ActiveCommand = CN

: $1 5 UpdateBatch d 39: /  H  U1 A'

RS.MarshalOptions = adMarshalModifiedOnly
RS.UpdateBatch

1&' N    +; > A' $  MarshalOptions 7


 
 
8 ' )6 ! .( D% 1 ' 8 ' $  9^_    @! 9^_   5^ "=& 
.$  ^_ [62 8F 3k ^_ $% Name DA 5 &y ! U1 A  5

** e1 1  U1 A' **


 A T64 $% K U1 A  5 $% 8@A  /  1V E2k p! $% >G 5!G
"  1 A  Recordset /@ 2I5 Status 7
 
 )@51
: $  >@ $% 5 )+ K / ^  8 1 `6 U1 A 

Do While Not RS.EOF

Select Case RS.Status


Case ADODB.RecordStatusEnum.adRecNew
'INSERT INTO .. JL>    = ;G% J


Case ADODB.RecordStatusEnum.adRecModified
'UPDATE ..
JL>   =G'
,K 
End Select

RS.MoveNext

Loop

End Sub

You might also like