Professional Documents
Culture Documents
ما لا يعرفه المحترفون عن ADO
ما لا يعرفه المحترفون عن ADO
ما لا يعرفه المحترفون عن ADO
***************
: •
( 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]
:
< ADO /(S< % /0? D2 V. Oc , *=0
:: & &{6 ::
( Microsoft ActiveX Data Objects 2.x Library ) $ .6
"' 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
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
'////////////////////\\\\\\\\\\\\\\\\\\\\
'For MS ACCESS
strProvider = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data
Source = <ت/">ا& ة ا
'=========================================
'Open Connection
CN.ConnectionString = strProvider
CN.Open
:: &{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
CN.Close
,'
, 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 NR' ' "* 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 &! \)
'For MS ACCESS
"Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =
C:\Books.mdb"
'or
'=============================================
'or
:
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 NR +,-.
SQL /'''01 H,'''2) Pd'''* /Q''' "'''* '''* v'''U P'''U ''' •
.OLEDB X8 +,-. SERVER
SQL /'''01 H,'''2) Pd'''* /Q''' "'''* '''* '''] P'''U ''' •
.SQL ODBC NR +,-. SERVER
% ODBC NR' +,-.' ' 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 /QR &3 &()* Connectivity
.9?e ,3 TSX @,-. D5s
C @.) " ,!% @ OLE DB %
O'' }''- NR'' '' '' C ODBC Name "''. ''(3 C &''. Hd'' ''
+X''- /''0 O
''< C ODBC /QR'' &''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
"' /QF' r$.' H'1 _
;3 c: ./01 ,d D2 SQL H12 NR*
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 @(
RS.Close
CN.Close
Set RS = Nothing
Set CN = Nothing
"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
+')
' '. X'? ' '< @.'p: % /QF' V
'6< /QF &2F r$~
: /QF ,!% V
6
@'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.*
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*
CN.Open strConnect
RS.Close
CN.Close
Set RS = Nothing
Set CN = Nothing
( http://www.vb4arab.com/vb/uploaded/13807/01249070053.rar )
9?.'' C M'' _X''< &''.? ''(3
'' M''14. % 7''01 OR''* ,''
: 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 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(?
/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
@ d. O
, @n
D.!
'3 c'( D'2 /'(S? '% '* /'* r'1* &)' & R' d'* ,
: . X? &.?
Option Explicit
'--------------------------------
RS.Move Int(txtJumb.Text), 1
Call Display_Current_Record
End Sub
'--------------------------------
RS.MoveNext
Call Display_Current_Record
End Sub
RS.MovePrevious
Call Display_Current_Record
End Sub
'--------------------------------
RS.CursorType = adOpenStatic
Call Display_Current_Record
End Sub
'--------------------------------
Dim i As Integer
Dim s As String
For i = 0 To RS.Fields.Count - 1
Next i
End Sub
:: & &{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. NR. 3
: Hd < 7S.( Nd6* M14. OR* ,(2 CNR. , c0
** /QF X,2 D2 Pd6 **
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(?
v''! C +,-.'' SQL +Q.'' '' ''. 9X &)'' +''@ ''I0 X% ''@(?
:
< " , " &Q &dI W*. &,-.
:: &{6 ::
.'
0 @: 3 X(: Sort % Filter ".5- " % "* ,(2
/'. '?* '< T'S)* Recordset /QF' &'2F /
.6 v
,6*
.H,
,F
@'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
:
< &p: H,! H4] &) /4-
'Open a recordset
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
:: &{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
:
< Delete
Rs.Delete
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% "?
.
.
,* (G% /QF "=* (
/QF
r$.''
''. +,-.''* : ( adOpenForwardOnly ) &'') •
. "
]| ",-. N^13 " .* . /01
&')
Y ;,-.' ,'3 O'0 O'c C "
']| ",-. N^13 " /* %
' &)
4 _
NU +,-. O(?
C /01 ( "< ) ?*. w.I
.
). &2(5 R0: ,(2 TQU w.I
'$ N'^13 "' /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$. +)* .
Ms SQL Server r0 " /0 H,23 N]X 98- $: D: H1 N
6. +)(
:
< Oc I( P V6 ,
,6. +,-. +)
<
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
% ' /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
"'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 ",-. Vy @,-.
. H1? /01 N
.&4 7S.( 2 &2 ,
8* Pd* ;3 "
.,
,$ 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?
RS.CursorType = adOpenKeyset
RS.CursorLocation = adUseClient
RS.LockType = adLockOptimistic
RS.ActiveConnection = Nothing
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$ %
'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 })
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
2,.' &d'I( /QF' &'2F N']X NF N< &F X? PQ] "
,
&''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
''.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(?
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