ما لا يعرفه المحترفون عن ADO

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 41



           


  
! "!  

***************

ADO &'()* +,-.' /'01 ,'23 /)14* &2(5 .6 728(


% $%
,'3 '(? C ( ADO "'2 9'.6 '
' ) >.? 9(2  @ /=% ;(< 9:
E''.6 ''F* 
,'')* ''(G% H,''
,F &''
?I 7''( J''4 K'' D'': ;''34*
/'3 ' C ADO ' M.
 N< D2 .6
0% >.? 9(2 1
O < .. >.?
H'1$ &'()* '@ >'.< &'S J'I
 (I?
"  N?R ADO P(* Q
"'? "'.6 O '< ADO "'2 'U? '
"' >'.?  ' $ "? C TQ
' N'. &')
Y '.  '
% O '< C V.!  W
X " T  9@F
"

H,'23 M'14* "' \' HX% X'F "' 'U<% @0% D2 NS , Z[42: ADO /(S<
./0

'4] % '60 % 'SQ: =4- 9<  C N? = /=4]% ,3 ;(< 9% 0 2


c: .b) N) & N5% < &?a^ _   (*`
  & N5* 
,''
1 D''2 Td''- .'' ''3 >''.? O''*3 ,'' /''I. &''
% O
,'' 9''<
f*'''''@ M'''''
Y "'''''2 % AhmedNegm@WindowsLive.com '''''0.?e
ADO '' &'' &''I3 f'')0 D''.! O''c C gghgihjllkjlj % gghgiijkkkhll
.&I- @*8
W*? f
*

:   •
( F0 ,!% ) F0 n ,12 ,6 ,!%
Mr. Ahmed Negm
: N
 3 •
gghgiijkkkhll / gghgihjllkjlj
: 0.?e ,
1 •
AhmedNegm@WindowsLive.Com
Engr_Negmawy@Yahoo.com
: H8 p &1.? •
R'( ;'3 '. / ') q,' K' D'2 H8' p &1.? .6*
O PF E,.( 3 O < > O PF &
X<% 3  &?1R D2
.>
http://www.vba4a.com/vb/showthread.php?t=429
* ADO /(S< +,-. *
'@ N'. &'I< /'01 ,'23 /'% D2 M rp  (*
.( http://www.vba4a.com/vb/showthread.php?t=15 ) \'' D''2 O''c
ActiveX Data Objects /''0 /''(S< "''2 (U
,''! P% '' r''p  ''
"' /'01 ,'23 r'0% $ D: P5 .
@Q] " . &  ( ADO )
.Visual Basic X< PQ]

9% 'G Project &S) O6. M


Y "2 rR ADO $ &p: O(?s

: Hd X$ .]  ,


,6. 3 C References .-*

Microsoft ActiveX Data Objects 2.8 ) ' X,'6 d'( Z'.]


O
,'' ''@n
'' 9: C O2R'' ''$  '' &''p: N''6. ;''3 ,'') C ( Library
''' v
,''6. &''8! N''6. '') Hd'' X,''6 '' ''< &''1.? _ '' "'' h,u ,''5e
''''''''. \'''''''' D''''''''2 Microsoft Visual Studio 6.00
N'! .'
O ' ( http://www.vba4a.com/vb/showthread.php?t=176 )
.  9: "?
 r= &?R

: 
< ADO /(S< % /0? D2 V. Oc , *=0

./01 H,23 % ,d  Pd*   ?6. O w.s


: Connection •
+Q.'  7S'.0 D'2 '@( Nd6* . /QF D2 .6
: RecordSet •
.P,F /01 O5 "2 Px  "S?   9 ]y D( %
H,'23 /Q.' '% 'I(* "S'?  ' M'
Y "'2 O(?s
: Command •
./01
+Q.' N]X N ". Command "S?  N
: Parameter •
.Stored Procedure 9z8-s $: % Query
w'p ' '< Stream &xI % "S? " HXI.  O(?
: Stream •
'''''''''''''''''''''''''''''. \''''''''''''''''''''''''''''' D'''''''''''''''''''''''''''''2 P'''''''''''''''''''''''''''''U
.( http://www.vba4a.com/vb/showthread.php?t=50 )

:: & &{6 ::
( Microsoft ActiveX Data Objects 2.x Library ) $ .6

.T) @(* * . /(S? $ D2


‫ا رة ا    رـ اـار أو ا
ـ‬ x  *
.‫ !ار‬
: *|< ADODB &1.?  T N %,10

** Connection Pd*  "S< **

"' O' }'- M'14. "' Pd'* H'(3 R'0: % Pd'* N2 " , .. T %
% "S'? +,-.' M'
Y "'2 @SR'0: .'
/' " &2( _  C /01 H,23
_ ' "' &-'0 ']% % &'xI _ ' "2 w
d. X< 9?
 C Connection &xI
: . 6( D2 Pd*  R0:  @,-. &xI

Dim CN As New ADODB.Connection

: ADO P! O* HX


8 Microsoft &<R . \ &. O(?
**

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

H,'23 N']X HX'$ /'01 ' N' 4.'* '< P')0 (< v! $0
"S'? PQ'] "' O'c /'01 H,'23  Pd*  R0~ % +)* 9% WF
C /01
.''@(2 Pd''I0  % /''01 H,''2) Pd''*  '' Z,2''
'' Connection
X'? ' '< "S?   " H,
,$ &! R0:  Pd*  R0:  D H4-
: ]y >= H _  p2= M

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

2,.'' Pd''*  /Q'' ,''


,6* '' &''6 _ '' R''0: ,'' '': ''.6* '' N''<
€d'-. D' C ".)
'4 Pd*  /Q ,
,6* O(?
v! C Open &I{
: . X?  < ConnectionString &5- /Q _ 

Dim strProvider As String

'For MS SQL Server


strProvider = "User ID= <‫م‬$
%‫ ;>ا& ا‬Password = < '(‫آ‬
* ‫ ;>ا‬Database = <*+, ‫ ا‬-( ‫ت‬/ ‫; >ا& ة ا‬
Server = </ 23‫ أو ا و‬4 ‫ي‬1‫* أو ا‬+, ‫ ;>ا& ا‬Provider =
SQLOLEDB"

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

'For MS ACCESS
strProvider = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data
Source = <‫ت‬/ ‫">ا& ة ا‬

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

'Open Connection
CN.ConnectionString = strProvider
CN.Open

/'01 "' &' D': Pd'*  /Q' €d'-. % '(3 X'?   


&''''''5- D'''''': &'''''' _ '''''' €d''''''-* ''''''G strProvider ''''''
.Open &I{ 2,. ]% Connection String

/Q' _ ' '


* % €d'-. 9?. Pd*  /Q ,
,6. &0U &)
4 %
: 
< CN "S? &. Open &I{ D: H 1

CN.Open "UID= <‫م‬$


%‫ ; >ا& ا‬PWD = <* ‫; >آ(' ا‬
Database = <*+, ‫ ا‬-( ‫ت‬/ ‫ ; >ا& ة ا‬Server =
<‫ت‬/ ‫ ة ا‬56
%‫دم ا‬8‫ ; >ا& ا‬Driver = ( SQL
SERVER )"

:: &{6 ::
&''5- D''2 Command "S''? N''U E''] ADO /''(S< K'' ''.6*
"S''''''? % Pd''''''*  /''''''0 &'''''' '''''': N''''''1)* ''''''. Connection
.H 1 ADODB.Connection
< +,-.' ' > NU Pd*  N$  H<  /Q O,1. ,(2
. : ƒ wp. \) @.p "? C ( > O < < ) /Q _  V ! WF

/'01 H,'2) Pd'*  ;'))! ,'3 9'?* ".)' ".)


'4 E,'!: r1*
"' /01 H,23 "2 PdI0  O(?
Pd*  +,-. " @.0  , C H< 
: 
< Close &I{ PQ]

CN.Close

** Pd*  /Q +@I **

,'
, D'2 '.6* ( Pd'*  &' % ) Pd*  /Q 9~ T
 (
% <
''' &'''< User ID +,-.''' V''' D'''2 N.R'''* '''. /''' "'''
_ '' &''.< .''
v''! Database Name /''01 H,''23 '' Password
" ; " &'Y)( &'5I &'Q &d'I ') ' " „% H5  /Q
: &. / "* D: .6* Pd*  /Q R0: ,(2

% SQL SERVER N''U ''@ Pd''*  '' W''†* ''. /''01 H,''23 r''0 •
Pd''*  ''$: O''(?
 .‡'' ... My SQL % ORACLE % ACCESS
% Driver N' PQ'] "' ODBC NˆR' ' "* ADO &4
.Provider N &3 PQ] " OLEDB X8  "*
N.R'* '. – /,$ 9: – ( Sign-In ) /01 H,2) P], &2 /0 •
% Password '' &''< UID % User ID +,-.'' '' ''3 D''2
.PWD
H,'2) &'3 Server +X'- &3 D2 N.R
,3  /01 H,23 3 •
/'01 H,'23 ' % SQL Server &'! ' O'c Database /01
.MS ACCESS /0 H,23 &!  \)

: ADO Pd* /Q D2 &U K wp


. X?

'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 )"

: 
 wp0 C X?   "2 *
Ms Access /''01 H,''2) Pd''*  /Q'' "''* ''* P P''U '' •
.OLEDB X8 +,-.
Ms Access /'01 H,'2) Pd'*  /Q' "'* '* 0'U P'U ' •
.ODBC NˆR +,-.
SQL /'''01 H,'''2) Pd'''*  /Q''' "'''* '''* v'''U P'''U ''' •
.OLEDB X8 +,-. SERVER
SQL /'''01 H,'''2) Pd'''*  /Q''' "'''* '''* '''] P'''U ''' •
.SQL ODBC NˆR +,-. SERVER

% ODBC NˆR' +,-.' ' Pd'*  N OSR0: ,(2 &@ O*.] ,!%
Provider N' % Driver N' &'3 "'. Oc OLE DB X8
Open Database H''1 Td''.] ODBC ''1.* v''! C T'' ''Q? ƒ''
./(' ( HX$ /01 ,23 /QˆR &3 &()*  Connectivity
.9?e ,3 TSX @,-. D5s
  C @.) " Š,!% @ OLE DB %

** /01 ,d  +,-. **


' +,-.' O'(?
C N'13 " ;0< < HU? @,-. +,2 " † D2
"'. Pd'*  &' "'p Data Source Name ( DSN ) /'01 ,d'
: . X?  < ODBC /0 ,d

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


0119777244"

\') '.6* '@ .&


ˆ &4 X?    Pd*  & 9 E* <
/'0 ,d D2 /01 &) "
8-* * v!  &< +,-.  DSN D2
' w.' C O1'! D'2 ODBC /'0 ,d' X,'2e .W'6 D'2 Vs ODBC
'.] 'G Administrative Tools D'2 \ˆ'p G Control Panel ?6. &!
ODBC Data Source H ''0 O''% @n.'' O''c ,'' Data Sources
.''
v''! Pd''*  /''0 P'']X: '' @,-.'' O''(?
''. Administrator
+,-.' User DSN €.'-
'( ",-. F System DSN €d-*
: O }] ODBC Pd*  R0e &. d n0 ... \) 6
_,'
,6. '(3 P'U ' '( C /'01 H,23 Z6 r0 ,
,6. 3 &. Hd 
_0X% Hd  < SQL Server 0% D2

O'' }''- NˆR'' '' '' C ODBC Name "''. ''(3 C &''. Hd'' ''
+X''- /''0 O ''< C ODBC /QˆR'' &''S3 "''p ,'' '' @n'' ''
./01 H,2) f . (  )
' : '*| ‹'! "? C +X- P], % Pd*  /0 ,
,6. (3 &. Hd 
+,-.''' ''' C P : "
'''] (
,''' '''(@ MS SQL Server ''' N'''0 '''(0%
 &< % +,-.  +,-. rX  Windows NT Authentication
X,d' "6(' 0'U '- '% ... Hd' ' '< ( i ) '3 '.]  '.] O(?
 @
'' P'']X: ''( W4.'' ''S,(2 SQL Server Authentication +,-.''
.Hd " ( Π) 3 8F  <  &? &pe +,-.
.&. Hd wp  < /01 H,23  .]
\ˆ  3 C E]% H 0 @n. &) Hd  < Next .I D2 \ˆ  ,
 \ˆp _[R0: *  
)* @n G /ˆ* &
% Š,!: 9X Finish .I D2
: H ( _  @n. OK .I D2

.JI  ‹!Q. C rp    &0U Hd &) Hd &0) 3

** Execute &I{ +,-. **

' +,-.* . Execute &I{ D2 Connection "S? .6

"' /QF' r$.' H'1 _  ;3 c: ./01 ,d D2 SQL H12 NˆR*
€d'-* M'
Y "'2 H,
, &Y1 /QF _  +,-. O(?
C /01 ,d
/QF''''' &'''''2F "S'''''< D''''': Execute &'''''I{ "''''' &'''''F* &''''')
.RecordSet Object
:: &{6 ::
"'' ''U<% PQ''] "'' V,''@ ƒ''I0 D'': P''5 O''(?
C ADO '' N'' ,''(2
"'' % M''
Y "''2  ''I(* "''?
''. /''01 r$.'' &''2 O''c P''U .&'')
Y
N'''< '''.6
v'''! Connection  Command  RecordSet /'''(S?
./01 H,23 " /01 r$. &I{ D2 @(

T % '3 C /01 2$.  Execute &I{ +,-. &I< wp.


Students.mdb '  MS ACCESS 7'0 PQ'] "' /'0 H,'23 R'0~
P'')! &''GQG D''2 P,''F  '' ''.6
9% D''2 ''  ƒI('' ,''! P,''$ ''@ f''p%
: &. /4- * C St_LName  St_FName  St_ID

X'2 '3 rR' R'0~ '3 'G C Visual Basic 6.00 


'4* &x w. •
.Standard EXE
.( i ) 3 Hd wp. * < C ADO /(S? $ &p~ 3 •
D': QU' .'* ,'2% /X J,(5 " ( ListBox ) X  &p~ 3 •
.lstStudents
,''2% /X J,(''5 "'' ( Command Button ) ''% ''.I &''p~ ''3 •
Run D'': ( Caption ) ''0(2 ''ˆ. ''3 cmdLoadList D'': .''*
.Query
: M  .I }- Click Š,6 D: . X? &p~ 3 •

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

: . \ D2 " 6* O(?


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

"S'''? '''.(* '''. Execute &'''I{ 2,.''' '''* M''' X'''? '''
'. RecordSet /QF' &2F r$~ , ;3 v! Connection
H'' &''
?. &'')6 % H,'' +,-.'' ''* O''c ,'' .RS ˆ.'' ''@(
8-* ''*
D: 3 WY N<  &p: /QF &2F PQ] Z6. DO .. LOOP
.ListBox 0% D2 Vs
 % X r

+')* '. SQL /12 I(. Execute &I{ +,-. T


% O(?s

+')
' '. X'? ' '< @.'p: % /QF' V '6< /QF &2F r$~
: /QF ,!% V 6

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


AND st_LName = 'Mohammed'"
** /QF &2F & / **
** RecordSet **

@'p /'01 H,'23 " /01 D2 Pd6 &I< D2 M1  (*
"' VI'5 D'2 ,' '.6* '. RecordSet /QF' &'2F "S'< N]X
'I(* PQ'] "' O'c /'01 H,23 P,$ " U<% % P,$ N]X HX$ /01
9% : P,'$ "' 'U< D'2 N.R'
' +Q.'  9% "' †' D2 ./Q.  ,!%
D'2 '.6
\') ,'! P,'$ '@0=< 7'01 &1'( ,'1* &F*( /QF &2F
'< C ,! NF P)6 " &2F N< N?R* v! C &I.- @3 P)6 %
.&F*( /QF &2F "
?. @< /QF F.*

RecordSet /QF' &'2F R0: &I< D2 V. 


 +)(
.Visual Basic X< PQ] " @*QF 2

** /Q.  +,-. /QF &2F R0: **

+,-.'' RecordSet "S''? N'' R''0: &''I< M1'' '' ''(*


&''2F D''2 ''.6
"S''?  '' 9% : ConnectionObject.Execute
''$ '' P''6 '' ''< ./''01 r$.'' '' &,-.'' €Sd''- fS''{ "''
9% N'13 RecordSet "S'? "' H,'
,$ &'! R'0~ % +')* 9% W'F
/(S?
: . X?  < ,-. +)*

Dim rsStudent As New ADODB.Recordset

/QF' ,d' Pd'*  f'


. "S'?  ' €Sd'] +,-.' O(?
Oc ,
€d'-. '3 C Recordset "S'? /0 ,d ". ./QF &2F r0
''< ActiveConnection &''5- D'': Pd''*  &'' % Pd''*  "S''<
: 

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

: v!
,d' D': R'
'.I Pd'* N'U* CN 9% X? " P 4  .Is

.N13 " (6p% < /01
"S'< R'0: .'
&'6 _ ' ' Pd* & +,-. * 0U 4  •
.T(p Pd* 

N''' RecordSet.Open &'''I{ +,-.''' '''. X'''? w'''p

"S'''''< R'''''0: % .'''''


v'''''! /'''''01 RecordSet /QF''''' &'''''2F
X'''$ ( ListBox ) X''' ''' D''': '''*0 &'''p: '''G ,'''
,$ RecordSet
'G M' c'( /I'5 ƒI( 6 M14. ,
,$ c0 &p~ 3 .c(
: M1 < c( X$ .I Click Š,6 $:  . X? P]X~ 3

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

: . \ " PU N6* O(?

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

9?.'' C M'' _X''< &''.? ''(3 '' M''14. % 7''01 OˆR''* ,''
: Hd  
< &F.(

** P)6 /
.6 @{: **

&'2F "' P')6 /'0 D'2 Pd6  &X M X?  (,-.
X'< ' P')! &'GQG r'$~ SQL H'12 ;'3 v'! RecordSet "S? P)!
D'2 h N,' i N,' g W'*. % N, ]=* ]   P   W4
"S''? '' '( ''< &'X "'' ,' P'')6 '% +,-.'' O'(?
"''? .W'*.
M' X'? ' P N')6 &'3 r$.' O(?
Oc D2 .Connection
: ".. ".ˆd " % +,-.

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

** /QF &2F N]X N)(. **

/QF''' &'''2F D''': /'''01 ,d''' "''' /'''01 r'''$~ +''')* 9% ,'''
@
,'* '6 NF' HX'$ P)6 3 D: P5 O(?
RecordSet
f'' ;''0< '' ''< /QF'' &''2F d''* O''(?
 .&)'' &''U '' ''(
% ''<
'< .f'  ' N]X 9?  ` "2 H12 6 NF 9?
;3 %  C N
Y
C &''F*( /QF'' &''2F N'']X HX''$ &''I.- /QF'' '' N'' 4.''0
: 6 NF ˆ. &. P).0  fS{ +,-. O(?

&'2F P NF' D': P).0   W1.* : MoveFirst &I{ •


D': ( BOF ) d'.] R'
.TH' 1 ( BOF ) f' &'
, &'Q2 , /QF
.Beginning Of File
&'2F '] NF' D': P').0  ' W1'.* : MoveLast &I{ •
D': ( EOF ) d'.] R'
.TH' 1 ( EOF ) f' &
@0 &Q2 N13 /QF
.End Of File
&'2F '. NF' D': P').0  ' W1.* : MoveNext &I{ •
.EOF f &Q2 &!0 /QF
M' NF' D': P').0  ' W1'.* : MovePrevious &I{ •
.BOF f &
, &Q2 &!0 /QF &2F
"'' T''( X,''2 f''- % +''Ž P'').0  '' W1''.* : Move &''I{ •
./QF
:: &{6 ::
&''
@0 &''
, '')0 w''p* ''. €Sd''- D''2 EOF  BOF "'' N''< ''1*
.W*. D2 /QF &2F

** 6 NF  ` r0 "* **

/QF' "' N')(. fS'{ "' "'.I{ +,-. &) &U  (3
&' ')6 (,-.''' '''< MoveNext &'''I{ MoveFirst &'''I{ '''
/QF' &'2F N']X +' D': Z'6. Do While … Loop &'
?.
N']X True &') '@{ O'c &' X &'2F _ ' &'
@0 D': Nd0 D.! &!.I
&''''''I{ +,-.'''''' M'''''' X''''''? '''''' ''''''(3 c: "''''''? .EOF &''''''5-
.2 '' Compiler $''. +)'' MoveLast % MovePrevious
Cursor v'6 r'0 &6'5 +,' O'c &1'( ='4- &' '@{: 'I D'2
'' v''6 H ''0 '' ''< ''6 9''? D'': _,'' R''
'' +,-.'' Type
&'''''''''''5- &'''''''''''3 "'''''''''''. ''''''''''')0 ''''''''''' '''''''''''(0 .T' '''''''''* ( DOS )
&'''''''p.  '''''''@.3 +,-.''''''' .'''''''
C Recordset.CursorType
% MovePrevious &'''I{ 2,'''* '''. adOpenForwardOnly
.MoveLast

'2 P'U PQ'] "' /QF' "' N')(. fS'{ +,-. wp. 
 +)(
: &. /4-  * .. \

.NˆR. , c0 $  6 M14. D: ,


,$ c0 &p~ 3 •
./X J,(5 " ( ListBox ) X  &p~ 3 •
J,('5 "' T '
% ( 3 Command Buttons ) '% w*'I &'GQG &p~ 3 •
./X
.c( D: /X  " ( TextBox ) €0  &p~ 3 •
lstData D: ListBox '  ˆ. 3 •
cmdPrev D:  D2 .I  ˆ. 3 •
cmdNext   D: \ .I •
cmdJump "
 .I •
txtJumb D: €(  •

: N?R  @ d. O
, @n
D.!

'3 c'( D'2 /'(S? '% 'ˆ* /'* r'1* &)' & R' d'* ,
: . X? &.?

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

: \ " 6* O(?


 1 N?R PU " HXI.Q %
( http://www.vb4arab.com/vb/uploaded/13807/01249081503.rar )

:: & &{6 ::
"S'''< +,-.''' 9X /'''01 H,'''2) H''' 1 P'''5 M1''' ''' '''(3
H,'23 ' N'. &')
Y "' 'U<% O p% D.! ( T,2 Oc C Connection
./01

Static "<' v'6 +,-.' /'0 &2F R0~ M X?  (3
&''''''''''5- adOpenStatic &'''''''''') €d''''''''''-. O''''''''''c Cursor
ƒ'?2 D'2 "'F*  Q'< ' /QF' " N)(. w* . CursorType
+'Ž +,'). w'* '. N'13 " (,-. . adForwardOnly &)
D'''''''''' ''''''''''2I ''''''''''$e R''''''''''0~ ''''''''''(3 O''''''''''c ,'''''''''' .\'''''''''')
BOF ".'5- '1.] '@ .
. ( Display_Current_Record )
&'
ˆ &
'p H'4- _ ' .6 NF P)! 3 % 2 N13 % EOF 
' ='4] Š,'! D': X`
6 NF X$ † N)! D: P5 &6 9 Oc
.Pd*  &2
' Form3 ,'
,F c'( N'F* 9% D'(*  M' M'14. NˆR. 3
: Hd < 7S.( Nd6* M14. OˆR* ,(2 CNˆR. , c0
** /QF X,2 D2 Pd6 **

&'''''5- Recordset "S'''''? &1!d''''' &'''''@ €Sd'''''- "'''''


"'' †'' D'' .&''2F /QF'' X,''2 r$.'' &,-.'' RecordCount
C '@.
@0 D: &2F &
, " /QF X,2 >6 EOF &5] +,-. &0?:
' < &F /4] " ,
, 
RecordCount &5- +,-. 9% :
: . X?

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
** /QF &2F w * „ **

&'F*( /QF' &'2F w' . WHERE H'12 +,-.' * < O(?

/QF'' _ '' „''I ORDER BY H''12 +,-.'' O''(?


''< C SQL H''12 "''
./01 H,2) HX$ P)6 " U< % N)6 T1* T( T1** @1**

'''. Sort  Filter ".''5- D'''2 Recordset "S''? ''.6

v''! C +,-.'' SQL +Q.'' '' ''ˆ. 9X &)'' +''@ ƒ''I0 X% ''@(?

P''')6 ''') @d'''d-. /QF''' W'''*. Sort &'''5- +,-.''' O'''(?

: 
< " , " &Q &dI W*.  &,-.

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


RS.Sort = "Age DESC , FirstName"

+% T' „(* W''*. 9''< '' c: "''* O''(?


C ORDER BY H''12 '' ''<
+,-.'  '
% O'(?
.„'(. W'*. ' DESC &'< +,-. PQ] " T
,2d*
: 
< WHERE H12 +,-. &)
Y ƒI( Filter &5-

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


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

:: &{6 ::
.'
0 @: 3 X(: Sort % Filter ".5- " % "* ,(2
/'ˆ. ƒ'?* '< T'S)* Recordset /QF' &'2F /
.6 v
,6*
.H,
,F

** /QF &2F N]X /01 ˆ* **

@'p2 &'I< /'01 H,'23 "' /01 D2 Pd6 &I< ;2 9% ,
c~' C /'01 _ ' v
,'6* % 'ˆ* &'I< D2 V. 9|   " C c( D2
''ˆ* H,
,'' &@'' O''(?
C &66''5 Hd'' /QF'' &''2F X,''2~ ;''3
NF' D': P').0  ' ': '.6* ' N'< ./'01 H,2) HX$ &.6. /01
'@*0 v
,6*  W†* . P)6 " N)! N? H,
,$ &3 €d-* G >4
/'01 H,23  v
,6. ‹I6 "2 &x &I{ % $e 2,. .
T]%
: *| PU <

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

ƒ'I0 r'1* Recordset "S'? D': H,'


,$ /QF' &'p: O '< O(?

: 
< &p: H,! H4]  &) /4-

.AddNew &I{ 2,. •


.P)6 ) €d-* •
.Update &I{ 2,. •

: Student P,$ D: ,


,$ NF &p: &I< . X? wp

Dim RS As New ADODB.


.Recordset
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

. P)6 ) €d-* WF


C SQL INSERT H12  O < P6  <
.=4] & @n* : – &† 3 – Null N1).*

:: &{6 ::
/QF'' P'')! ''3 "''* ,'' Update &''I{ 2,.'' '')* '' c:
X% '@*0 W .' /'01 H,'23 D': /QF' _ ' &'p: .'
"' H,
,F
"' N')(. fS'{ "' % +,-.' ]y NF D: P).0  XF – 9)
< – 

.N13 " /<c . /QF

&'''I{ +,-.''' /QF''' &'''2F N''']X '''6 NF''' V '''! T '''


% O'''(?

: 
< Delete

Rs.Delete

 ' C '6 NF' TX$ Z( w1d


( Delete ) &I{ _  2,. XF
N'13 /QF' "' N')(. fS'{ E,'!: 2,.' _  V 6 &2 W)* 9% WF

.P)6 3 D: P5 &6


** ADO  /QF "=* +@I **
&''6 ,''(  '' C \'') H'') T''p. ADO /QF'' &''2F 9''?*
/X% c~' .='4] &' '@{ ' W1'.
&'6 _ ' ' P)6 ,!% &3 €d-*
E'']% &''3 "''. % +'')* 9% O''2 W''F
C /QF'' V ''! % ''ˆ* % &''p:
' '< +,-.' /QF' "='* r0 ,
,6. &,-. LockType &5-
:. X?

RS.LockType = adLockOptimistic

c: O'0% H,
,' &Y'1 &'$e .&'5- _ ' &% E, "2 9| P.* O
D'2 9'?* 9% W'F
C ",-.' HX,'. /'0 H,'23  /QF N
,. ;3
''( ''(
'' Record Locking /QF'' "=''* +''@I &''< &''
X
/'01 H,'23 ' X'$ NF ƒI0 3 N
,. &6 " "
]| ",-.
LockType &5- PQ] " /QF "=*  ?6. .
  .;3 ƒI0 
:&. ) E,!: D2 .6* 9% "?
.

&''2F /''0 "''. +'')* : ( adLockReadOnly ) &'') •

. \) H) /QF

[R''. "=''. ''* : ( adLockPessimistic ) &'') •

. 
,* (G% /QF "=* (
  /QF

/QF' ['I. "='. '* : ( adLockOptimistic ) &') •

O'0% % .. \') Update &I{ 2,. ,(2 /QF "=* (


 
_ ' M'14* 4.'* "' O'(? O' '6
'< /QF' N
,'* 4.'*
&''2F ƒI('' '']| +,-.'' ''@.(
D''.! /''01 H,''23 D''2 /Q
,''.
. @2 N  @.0  " /QF
"' 'U<% v
,'6* '* : ( adLockBatchOptimistic ) &) •

. UpdateBatch &I{ PQ] " ;3 ƒI0  NF

/'ˆ* H,R' &5- &4)( D: ADO P! v


,6 0F
T
% O <
N'* . &?1R /)14.  N.  P,F / ` ,
,6* &I< "
]|
. PC „@$ " U<% D2
** ADO "
]| /ˆ* H,R **

PQ'] "' @: P5 .


% ",-. HX,. /0 H,23  N ,(2
.O*QF' &'2F N]X HX$ /01 &3X " ,<=. WF
C /16 " &?1
"'' P'').0  &''2 ,'')* '' CursorType &''5- 9% T)'' ''0<c ''?
D'2 +,-.' ' ` r'0 ,'
,6* ' &'S &'4)( ,'.* Oc D2 C /QF
./01 H,2) HX$ & /01 /QF &2F 1* &I<

..@( N< P, [ CursorType ] &5- &I.- ) wp0 




r$.'' 
''. +,-.''* : ( adOpenForwardOnly ) &'') •

_ ' " HXI.  O(?


 ... /QF &2F N]X \) + D: /01
% ComboBox "S< &x1. &)
4 _ @ P,F Pd*  w.  &)
H< ' ' NF' ‘'I.!  D': &$!  9?* " O0 C .‡ListBox ..
D'': P'').0  NF'' H''3 X''F &'')
4 _ ''@ O,-.'' C ''*3 ,''
f'I-
' H< ' "' '@$ &)' /QF' V '! .'
 . NF
. „@F H<c  N 12%

/'ˆ* K' H,R' O'F01 w'.* : ( adOpenKeySet ) &') •

D'2 N' &'!  JX% @(? C "


]| ",-. N^1’3 " .* . /01
. 2 ,! D2 “ +X-

/'ˆ* '$ H,R' O'F01 w'.* : ( adOpenDynamic ) &) •

. "
]| ",-. N^1’3 " .* . /01

H,R' &') _ ' PQ'] "' "?


: ( adOpenStatic ) &) •

&')
Y ;,-.' ,'3 O'0 O'c C "
']| ",-. N^1’3 " /ˆ* %
' &)
4 _  NU +,-. O(?
C /01 ( "< ) ?*.  w.I
. 
). &2(5 R0: ,(2 TQU w.I
'$ N'^1’3 "' /01 H,23 r0 D2 /QF  ` &!. ) r0 ,.

&) 9?* C PU N1 D2 Ms Access /0 H,23 &! I ./01 ,23
H'') +,-.''* ''. adOpenForwardOnly '' '' ` &''p. 
adOpenKeySet ' ` +,-.' N 'Is
'( C /'01 H,'23 "' &

.E] &1< / v
,6. /2 &! 
** Command  "S< **
' N'. ' ;'3 'n  ')* O'0 C /01 " &2F  N ,(2
_ '' r$.'' /X% '' c: "''? .Recordset &''xI % "S''? fS''{ €Sd'']
" '* O' w'.
' ADO Command +,-.' "'2 D(† 9% ,F. C /01
' 9?
. H " U< +,-.Q N3 "S< N]X 98- SQL $: % +Q.
/Q'' "
8''-* .''
 .H,''
,2 /'' /'' "'' &''2 ''I(* /X% c: ''U N''6
"S''''? }''''- Parameters ''''F. N'''']X 98''''- ''''$e % +Q.'''' 
_[2,.' '*Q 'ˆ* O'(?
"S'?   X,2: " @.(0 9% , .Command
.H " U<

'. SQL H'12 D':  n0 C Command "S? +,-. &I< wp.
: "A" V6 P @ %,1
"
 &14 $ r$. +)* .

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

Ms SQL Server r0 " /0 H,23 N]X 98- $: D: H1 N
6. +)(
: 
< Oc I( P V6 ,
,6. +,-. +)
<

CREATE PROCEDURE spSearch


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

D2,''s
'' % 98''- $e'' _''1]: Command "S''? R''0: O''(?
O''c ,''
'
* Ms SQL Server /'0 H,'23 N']X X'$ Stored Procedure
: . X? < $e Oc  >4 N &3

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

 ' ' (!' '. ADO /(S< $ D2 .6


X?   9 E* <
/'''(S? "''' &'''2F D'''2 Command "S'''? '''.6
'''< .9| D'''.! r'''p
R'0: , O(?
 .98- $e N]X N @( N< NU
. Parameters
N'3 X,'2 PQ'] "' E']% H' @S2,. /Q _  .! Command "S?
: 
< X? 4 "

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


RS.close
RS.Open cmd

% ' /Q' 'ˆ* ,' E']% H' /QF' &'2F w.' HX2: .
X?   
.A V6 %,1* .  $ r$. .
v! Command "S?
:: &{6 ::
N'''* '''. Execute &'''I{ D'''2 T '''
% Command "S'''? '''.6

.Connection "S?  @.U &@R &)


4

** &dI( /QF /2F **

"'2 P8 H<  N]X N* . % &dI( /QF &2F Š,6. *
H,'! D'2 '@nI! /'01 &'2F v
,'6* O(?
v! C &1!d /01 H,23
/'01 H,23 " @( "8. M)6* O < ;11!% 9: Storage Device "
8-*
,''(2 Disconnected Recordset &d''I( /QF'' &''% ''@n* .,'' ''
N')* &'(). _ ' "? C ",-. V y @,-.
. H1? /01  N
.&4 7S.( 2 &2  ,
8* Pd*  ;3 "

"''2 /''01 H,''23 "''2 Recordset /QF'' &''2F Nd'' O''(?

CursorLocation &'''5- adUseClient &''') €d'''-* M'''


Y
&'@$ ) H< ' ' % ( +X'- &'@$ ) /01 H,23  9< c:  ` 9? X,6* .
: &*| /4- r1* &dI( /QF &2F R0: O(?
 .( N

.,
,$ Recordset "S< R0~ 3 •
&''''''''''''''5- adUseClient &'''''''''''''') €d''''''''''''''-. ''''''''''''''3 •
.CursorLocation
/'01 H,'2) Pd'*  PQ'] "' /'01 Recordst "S'? N' 3 •
.(! 9% M1 < Open &I{ +,-.
ActiveConnection &''5- Nothing &'') €d''-. ''3 •
'< Oc ./01 H,23 M14. " Pd*  H(3 Nd % N4* .
D.!
: . X?

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

** X? PQ] " /QF &2F R0: **

H,''23 "'' Recordset /QF'' &''2F N'' &@'' "'' †'' D''2
&'2F R'0: 4.'* O'0 : C H,
,' &Y'1 &@' NI HX$ /0
'G ,'
,$ Recordset "S'< R'0: M
Y "2 X? +,-. &
,1 " /QF
fS'{ ƒ'I0 +,-.' /QF' &'p: T']% Fields P)6 &2F R0:
R''0~ +)('' C M1'' '' D''2 ˆ''5 P''U< ''. X''? ''* .T)'' ''0<c ''.
"2 ,1 N< , Oc Age  Name  \) ")! D2 .6* /QF &2F
: /0 H,2) X$ %

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
N'* 9| ;0% C /01 ,23 "2 ,1 N< T, O0  X?    ,
,F
;']X ,'3 O0 MU >4  < &4)( _  ;<X% c: .. d-R Z„@$ H< 
T' SX /X''* ,''3 v''! T1''0 &1''5 9''?* ,''3 H''?I 9% ''2% C "''.6 Vd''
N'< f'.] ,'3 'p '( "'? C /0 H,2) &pe CN "S<  RS +,-.
R'0~ '(3 ,') C JQ'Ye D'2 r'0 % " /0 H,2) .0  ( "6( VQ.] 
' „'@F H'<c  _X$ 9?  P,$  JQYe D2 ,
,$ r0 " P,$
'Y O'0?~ "'? O'c "' 'U<% &'4)( _ ' "'2 Š,6. 4.% " .. 2 N*
” O'' P''FI /''01 ,''23 /''<6 \'' ''3 '' E,''.( D''2 Z''I.
+,-.'' '' X''?  '' ''  ''
% ,''
,$ ''@{ '' .. ” O'' P''F '') M''6
"' 'U<% D'2 '.6* /01 &2F D: N)! &p~ +)* . Append &I{
+,'2 N'U *I'5 K' O '< N')6   PY *0 r0 N)6  NU N
&'0?: % C adFldIsNullable &'5- O'(. Null &') P1).
N'')6 '' ''< C adFldMayBeNull &''5- O''(. &''† ''3 P1).''
.W*. D2 Age  Name

D'2 XML M'(. f' N']X /QF' &'2F ‹'I! ' C ( T,
,$ ,$ 
: PU N1 D2 . X? +,-. Wd })

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

M'
Y "'2 E']% H' ' ‹Is!  f   +,-. &Y N? O(?
<
: . X?

RS.Open "C:\TempTable.xml"

** /01 H,23 v
,6* **

%,'10 '02X "'? .. N'3 ( ADO ' &  (]X ,) C %, "
% " X%
+'')0 >''.? '' '' W2.''0 \'') &''5 "'' ''()
'' ''0  X''2 N?R''
"' ",-.' &'2F '( /QF' "=* &I< D2 Oc N13 (* .. )14.
: '. \' D'2 r'p   &R3( * C ;3 ƒI0  N)6 ƒI0  N.
_''<c ''* ''< % http://www.vba4a.com/vb/showthread.php?t=71
' N' ,'(2 ']% D'( /QF' "'* +'@I ']=
O'c "' †' D'2 "? .T)
+')* O ' ;'0= C /'01 H,'2) Qd'. "'?* ' c~ .&dI( /QF &2F
;'3 c~' .&'1.? N']X W'.? " &2F D: n(* ;(<  < /QF D: n(
H,'23 D'2 /'ˆ. _ ' ƒ?(* " C /QF &2F /0 N
,* % v
,6.
./QF _  NF. +)* D.! /01

O'0= N-* .. / _  %)* H P% ;(< c: >4


%, O)2 9=  %
 ' •'1† 'U< &'?6 wd E,!:  f  ) ,
,$ f{< O(* *
'@0 p @R &5- /01 NF* O2 Z
, O P3 PU N1 D2
% &'?6 &6d' ' O'2 „'F0: 4.*  ;3 OX ,3 C , NF* 
' O'2% 8'F(* '< P8'( /'I N' ']% Z
,' "' ;1Y O2 ;3 (G%
E']% H' /I _  ]% " , O0% ( &?R "? C =4]  2„: 9, ,
: F +Q?   $.0  P* .E]% H @(<%  @p f Ž „F0: ,

'< ADO D': ' '$~ D' C ".)


'4 /'01 H,'23 v
,'6* O(?

.''. &'0U &')


4 "''2 '% C Batch Update &''–Fs v
,'6. &' +')

2,.' &d'I( /QF' &'2F N']X NF N< &F X? PQ] " 
,

&'IY] Hn0 )~ +)0 


 .W!d /01 H,23 NF v
,6. 9z8-s $:
.".)
4 " —N< D2

** /QF " &2F v


,6* **

&''2F D''2 /''ˆ. "' ,''


, ''$: /QF'' 'zFs v
,''6. O'' w'.

&''I{ PQ''] "'' H,''! H'' &1!d'' /''01 H,''23 D''2 ''@)14* /QF''
&') €d-* WF
C &I{ _  +,-. " "?.* ? .UpdateBatch
&''2F &''5- LockType &''5- adLockBatchOptimistic
: 
< /QF

RS.LockType = adLockBatchOptimistic

: &*| /4- D2 v


,6. &! N.R* Oc D2

: . X?  < &dI( /QF &2F D2 /ˆ. $: •

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


RS.Update
' ‫*اء ا
ـ@ &ـ=?م‬:‫ و ا‬، <
 =' > ‫*اء ا‬:‫ا‬
A‫ ـ‬B‫ ـ 'ـ‬C/‫ أ‬-( C < ‫ آ‬D+ ، ‫ت‬EF ‫ ا‬G ‫ف‬I <'
‫ت‬/ ‫ة ا‬ ‫ات‬,J
‫ا‬
RS.MoveNext
RS.Delete

''.I Pd''*  "S''< €d''-. /''01 H,''23 '' Pd''*  \R''(* HX''2: •
: 
< ActiveConnection &5-

RS.ActiveCommand = CN

: 
< UpdateBatch &I{ PQ] " /01 H,23 v
,6* •

RS.MarshalOptions = adMarshalModifiedOnly
RS.UpdateBatch

,'
* ;'(< ' c: X,6* . MarshalOptions &5- (,-. ,3
.''* O '' .\'') @
,''* ''* ''. /QF'' +% N''? /QF'' &''2F r$.''
.. NF V ! G P NF  Name N)6 &3 ˆ. v
,6. &2

** T
,
/01 v
,6* **
&'6 _   C v
,6. &2  ?6. " ,
8 9! K  /X% 
r'0 ,'
,6. Recordset "S? &1!d Status &5- +,-. O(?

: . X?  < Oc C " NF D2 .


 v
,6.

Do While Not RS.EOF

Select Case RS.Status


Case ADODB.RecordStatusEnum.adRecNew
'INSERT INTO .. I‫ـ‬K=
 ‫ ـ‬، ‫ـ‬: <F‫ا &ـ‬I‫ه‬
‫ا رة‬
Case ADODB.RecordStatusEnum.adRecModified
'UPDATE .. ‫ ا رة‬IK=
  ، <F( ,J ‫ث‬
End Select

RS.MoveNext

Loop

End Sub
&*]
C ADO  ;3 ƒI0  Hd) D .$ D: ;5 ,3 9<% ( D:
R' ' ADO "'2 b') &' HX
„  ;)s ,3 9<% 9% “ D* “  " T$
.ADO  N. P! s ]y )  0n.0 .. 

\'' % X''< '' &''( ' 4]% /,''$ '']% ;''?* c: ... E'']% H'' ''<%
$   -s0 < ( XX.* Q C &SQ: 4]% D.! % &) &U % H 1
\'' D''2 >'' O'' P''F &''
X<% /
,''.( D''2 ''0* .H''5 "''!=
\''''''' D'''''''2 >''''''' O''''''' P' '''''F /
,'''''''.( % www.vba4a.com
'(G% '2 Pd'6 9'* '014* ' T'X 9,F. www.vb4arab.com
.E]% /ˆ Visual Basic /ˆ &. ?.!

Z   D5 ... *< X,  2 &0„ I0 p )] X,2  961
."
, +
D: T&SX THQ5  2  D5 ,6 0, @< M- , D2

*6*
* F0 ,!% *
AhmedNegm@windowslive.com
002 011 977 72 44 – 002 012 944 79 49
EGYPT

You might also like