visual fox pro 9.0 y sqlserver 2005
DESCRIPTION
Visual FoxPro 9.0 y SqlServer 2005 - Desprotegido - Se puede ImprimirTRANSCRIPT
Visual FoxPro 9.0 y SqlServe r 200 5
DATA
CAPAS1- - ---.
I I
+~tI 1
NEG O CI O I CO N EX ION 1IN T ERFAZ
II
o .II
En es te diseño de cap as se puede obs ervar cla ramente que no existe una re lación directa
entre la capa interfaz V la capa de datos, pa ra que dicha relación exista tiene que transitar a
través de una capa de negocies V seguidamente de una capa conexión, es ta última se
comunica median te los SP (S tored Procedures) a la da ta,
Ejemplos de código que van en diferentes capas
l a cap a interfaz está basada en clases visuales de VFP, la de ne gocios en clase no visuales de
VFP y para esta capa de tipo Ncustom", la de conexión también utili zará una clase no visual VFP
de tipo "ses-ten" Vla de da ta será un SqlServe r que puede ser 2000 o 200S. Cabe resa ltar que
cua lquiera de las capas puede ser reemplazada por el tipo que uds. crean conveni en te.
Para e l ejemplo tenemos un obje to de ne gocio ll amado "mtc bje tc" e l cua l tiene los siguientes
métodos: selecciona, inse rta, edita, borra, revisa Vlas propiedades _alias, campof. campoz.
campoj. , Con lo cual tendríam os :
• Inte rface
En nues tro fo rmulario te nemos un méto do refrescacrid[) , con un código similar:
Thislorm,grdatal .recordsource=nn
Thlsfc rm.miobjeto. seleccdcna ()
Thislorm,grdatal .recordsource=thislorm,miobjeto._al ias
Página 1
Visual FoxPro 9.0 y SqlServe r 2005
• Negocio
Este objeto tiene el méto do se lecciona, ruyo código se ría:
Cone.execsp("Mi_Stored_Procedure","7 paramt,7param2,
7param3", "mtcurscr"¡
This. aüas- vmtcursor"
• Conexión
Este objeto tiene un método execsp. su código te ndría que ser:
- sqlexeuncon.texecute ste red prccedure- par éme trcs","_w rsor" )
• Data
Es ta capa constará de dos parles {SP, Tablas):
o SP
@paraml as int
@param2 as int
@param3 as int
Select campo l , campcz. campea. campo4 fr om mitabla where
campox=@paraml and campoy=@~a ram2 and campo¡=@param3
o Tabla
l a labia se ll ama mitabla, con sus campos: campct. campoz, campea. campee.
campox. campov. carnpo z
Página 2
Visual FoxPro 9.0 y SqlServe r 2005
CREANDO LA CAPA DE DATOS
DISEÑO DE TABLAS
' ~ Micro.oft SQL s.....~, M~n~g~m~nI Sludio I - e )(A" .......o Ed,tar v., Proy. cto D".,'í~do, d, t. bl~, D" 9r.m. <l. b ~!< d. doto, H, rr. ",.."t., V, ,,ton.
Comunid.d Ayuda
; X
IIrodudo -
.""
det o._Focturo
, ~ """
,~ent ec~be _FactlJl"~
• ,~. • ~ ''''~
~o ,~,
.~ '... '.o:,",,, ,~.
••
"l • ..,... (6 tAA lnuNÚ"[;o:;;;,<"="C"C9 o:I3~ 9C.C,c,[,=1I
.. L::;¡ BOl " d. d..o.
~ D:l B..., d. d. to, d<l"'w".~ Cil lnm ,," n'" M b.,,, <l. d' t M.. lJ ",i b." d. doto,
G.J [)i".I" m~' d. b. s< d. dato,
.. CJ h bl..
~ C;¡ T. l>I.. dd ,,",m.~ D dbo"I>.nt.~ D dbo,rob. _h et",.
~ D dbo,producto
~ D dbo,d"'. J.ctu..~ L;,¡ Vi ,,~,
~ CJ <;; " o mm o,
~ C3I Pm,,""'.'ion
•
~ d N" ",. comu~~ 1[)J 1ITi ti] [;) 1~ 1~ ':l!J r.!~ 1d " 1Bl E 1) lJ> ~ ..L
j Q tJ VI !3l " >" 1..:i 1 a~' 1V¡". d. t ,b lp I % ;~ .tj Ig _g '<::3 1J5%.
:/ M ANTUNEz: ;;" b ,;-...... - [),~g;~ ;., ._o 'l
Crearemos la siguien te base de da tos "mlbasededa tas". YIas tablas se rán las siguien tes :
Página 3
Visual FoxPro 9.0 y SqlServe r 2005
clientecodcli int pknom cli varchar 50dircli va rchar Ote Icli cha r(10)
~ producto
lEErocod intpronom va rc har 50prounm ehar 1 )
ENTORNO Sa l SERVER 2005
cabe factura;d tact int k
"" f act char 10te e tect datetimeco dcli int ~
data factu ra;d dfact in t k
" t act int &proco int &cantidad numenc 12 3
re c¡o numenc 12 ,2total calcula do
J. th ,. " "' ,. " I Lj) t:.'i tñ tíl ' L:l¡ I ;!j f;!\i e¿~ 1nI (1 I~ ¡:;¡ f>l. tJ; ~ ~
; ' 1'M ", 'b","' d "'~ , , ' JO" ." ,,1 . ~:; IIIl. ,";. ¡ f" "J qMAJH 1INFI . ,II ...,~• .- 'Ql 0' ..' ' 1_~ 1 1
( 0 00" '" I ' 1 •• ~ MMiTUf-I,,,""n~'~OC"" " " """" . ''''' -'~
~ ~ 110,., ' , Jot. ,• CI Ro.., ... ~..ú,~.. ">l'''''.• C"¡ 'o,,. ,,",.., ... h." , ... ....o,• lJ ",, ~., <d.d.t>!
f t:..l D ,.~",»., ., b", ~, d""• C:l " N"
, ::;¡ l ..","" '¡'¡',,'.m.f f:.I v,," ,f Ci Sno"""",
f U P ,o ~''''''.'''on
• t:;.¡ Sm i" B.o~<o
~ Cl AIrn."","";"",,f ÜI """n.o
• r:;¡, 'i<9 1O 'ol .~
• CJ o"..", ., """I~ ,
:r. ' . " '~,>. ~ "
,
l " , Col 1 ( .. , ¡liS
Este será e l entorno de trabajo de nuestra capa de da tos:
DEFINIEN DO INDICE IDENTIDAD
Página 4
Visual FoxPro 9.0 y SqlServe r 2005
•
....." . ,("')
v... , ' o' (oo)
" ",(l O)
,El ., ,,,,, I K.oo:~ ~e""""8 tspecl ",", oo~ tdorJtd ,¡
( Ijert~<d: "Irtrene r to !le ~erJl' 1
~."'---~~~~~='i~
I (Idonb dod)
•
'.
• Ii) MN .rr.N'I ISOl 0;." .. ,~ m, -"1• I:..l ¡;,,,, <l, o",,,,
~ Q ¡¡.,,'" rl, <l.,", " .. '''''''l'~ Q lo" "" "'.." .... b" "'<I. d..,,~ ti mib"• •i.d.,,,,
~ :;¡¡ r"' 9' '''''' d. N'" d. <4""• ::;¡ T.." .,
~ DI T"'-'1.. dd " ".",.
~ :;¡¡ h'"~ ::... ' ,"ú..mM
e ::..¡ f'"9"'''''''''"~ ::.¡ o;,.....,,,l'<ol .,
~ ::J Alm." m m ""o
• :::.. \ ' 9"",1. <1, C,¡ ""9,.<&.d
• t.t 0.".... 0.." ,,<1.,:r:.•, ,,'~~ _
<~ l' •ti,,,
Las ve ntajas de utilizar es te lipo de campo como NPrima ry Kev", t ien e muchas ve n tajas tanto
de libram os de pe nsa r, ¿co mo ha go mi programa de correts uvos >, y adem ás ayud a a l
performance de la base de dates ta nto al mome nto de graba r como al momento de ha cer la s
relaciones y b úsque das ya que e l índice ' Pnma rv Key" ta mbién es un índice t ipo cluster,
En el graflcc se ve como se ve la cre ación de la tabla y la definición del campo identid ad y e l
incremen lo e n este case de 1 en 1 y e mpieza en 1 el oo rrela ñvo.
En lo personal po ner un número pequeño como en este case a los dientes, fa ci lita el uso para
l o ~ usuertcs, e s má s prác tico re corda r números peq ueños que ce dlflcacíc nes con
pseudc codigos o procedrmtee tos complejos.
Alguno~ coma ndo s de u tilidad al manejar es te tip o de campes :
DIlCC C HECK IDE NT
't abl e~n ame'
1 , 1t/ORE5 E ED
,[ WI TH NO_ I NF OMS GS
E j e mp l o :DIlC C C HE;CK I DE; NT ( ' " l i e n~e ' , RES E E;D, 0 1 .
Pá gina 5
Visual FoxPro 9.0 y SqlServe r 2005
R~5~t~~r~ ~ l c~mpo id~~t id~d ~ O .
IN S~ RT I NTO c li~nt~5
v ~lu~5
( 'Ju~n P ~ r~z ' , ' mi dir~ccion', ' 88 3 7 7 6 6 6' )
SEL~CT @@ID E NTI TY
Dicho "Selert" devolverá e l número de identidad aslgnadc.
DEFINIENDO íNDICES DE BÚSQUEDA
Ind,<~. o d;ovo. • •Ind,,, c> d av. P""" 'Y....Uno'l". "1. "' ~n3dó:
De d..",,' EM or p,op..d.d.. por. 01da" o i"dico UlJIQUE nu<vo.PK_d itn"
B (Gene..n •~5S'l' imn•• nomd , (AS()
E, Uniqll~ u,Topo Ind>c, ,
B Di.dí~dor ~.. t.bl. ,
~Joq" oo, do /¡I. I' , mlitido, ,~Jo q' '' o , de p.g ,na p"mmdo, s..e l", E, tM~ 'am ~I'N N.( a lumno> ,nd lll d.,
e ru, (orno elll'iTE RErt N.m E ' r '''¡'' ~oo " do" I'oc io do d, PPI~.tARY •
I 49" 9"' I I Ehmi" .. I I (m., I
Solo crear estos índices a campos de búsqueda mas frecuentes, no abusar de la delini ción de
campos índices ya que al flnal hace len to la grabación y la búsqueda. Para nuestro ejemplo
solo estamos creando el índice al nombre del cliente porque suponemos que se rá e l campo
por el cual rea lizaremos la búsqueda siempre y cuando no sabemos el cód igo.
Aquí un ejemplo para hacerlo vía sentencia :
CREATE 1l0 ll C L US TE RE D IN D~ X {IX_c l i ~n t ~ J 0 11 [ db o ] . [ c li ~ nt~]
¡ ! n o mc l i l AS C I
WIT H
¡ P A D_I II D ~X - OFF , S TATIS TICS_II0R~COHPUTE - O F F ,
SORT_ I N_ TE MPDB - OF F , IGN ORE _ DU P KEY - OF ~ , DROP _ E XISTII1G - O f' ~ .
ONLIN E - OF ~ , A LLOW_ROW LOCKS - ON . A L L OW_P AGE LO CK5 - 0 11 1
m.
Página 6
Visual FoxPro 9.0 y SqlServe r 2005
[ PR IMA RY )
DEFI NI ENDO INDICES UNICOS
I n d i< l!'~ o ( l <l. wes '.'índ;<~ o d~ve Primory!lJniq.¡e .elecoomdo:
-'!:Ccati eJ .,(t ...--q Edtar propied.3des par~ el índice o rnve PrruaryfUniqJe ex&tente ,f'K_c~beJ~, t'Jf~
:~ ~Gen",ral) A
Column~; nroJ5I:t (A5e)
J:> u n~,,,,, Índo:e --
B Diseñador de tabla.
BIoqueo< de ~Ia permitidos ,Bloqueos de págm rtermitld' 51
C1~ve Es texto co~to ~
Columna> inclida<
Crear ce<no CLU5TERED ~
@ E>pec~o:ación_de ""pac O] de F'RIII'\AR Y r;;, .
I Agregar 1 ( Elimirm I I Corr<lr I
La utilid ad de este índk e es la d e con trola r duplicidad de da tos para n uestro ejemp lo ser á el
Número de fa ctu ra, ya qu e es un da to qu e no ten dría q ue re petirse ; ya se sabe q ue un índice
de tipo PK ya por defecto es de tipo "u nique".
Aquí el ejemplo vía sentencia :
CREATE UN I QUE NOtl CLUSTERE D Itl DEX [ I X_c ~be_f ~c t u r ~ l ON[ dbo l ·lc~be_f~c tur~ l
( I n r o_ f ~c t J x s c ¡\'11 T H
{ P A D_ I tl D ~X - OF F . STATI STI C S~NOR~eOMP UTE - O ~F , SOR T~I tl _TE HPD B
O ~F ,I GNORE_ DUF_KEY - O~F , DROP_~X ISTl tl G - OF ~ , OtlLIN E - OFF ,
hL LOW RO W_ LOCKS Otl, ALLOW_ FAGE_ LOCKS - Otl l
ON ! FR I HARY]
Pá gina 7
Visual FoxPro 9.0 y SqlServe r 2005
DEFINIENDO INDICE UNI CO COMPUESTO
DCdo>tiJ",lu,.'PK_rieto_fO(I""
Indo< . o d~v. P'im' ryiUm'lu, " I''''o~'',.,",,,_, __~~__~~_~~_~~~ ,
Co lum"..
Es Unlqu~
,d 1" 1 (~ p~ (A5C)s,
In d,co
Cr< or (otlloCl USTER W No
ID E< 1"Clh( ~oo" d. ..p."o ~. d. PRIMARY ,
Cm"
As í como se puede definir índice único a un solo campo lambién se puede ha cer de la misma
forma con mas campos, en e l ejemplo se res lringe la duplicidad de productos por factura.
y aquí el ejemplo de hacerlo vías sen tencia.
O FF , SORT_ IN _TE MPDEl
ONLItIE - OFF ,- OF F ,
CREh TE UNI Q UE f1 0 NC L US TE RE D INDEX [I X~d"'t ..~f ac t u r a l OH
[dbo l · ld"' t a~ f a ct ur a l
( l i d~f act l hSC . [ p r o c o d] AS C )
WITH < P AD~I N D ," X - OFF , S TATIS TICS~NOR,"COHPUTE
ALLOW ROW~LOCKS - ON, hLL OW PAGE LOCKS ON ¡ ON [PR IHARY !
CAM PO CALCULADO
Página 8
Visual FoxPro 9.0 y SqlServe r 2005
~ M,<IO'ofI SQL S.IV~' M~n~g~m .n1 S1ud,o - g X
j ,;,¿ Ntlm coo, ,,tu I DJ ImEn [;j ! [3 I~ i:¿~ r¿~ Q ~ I~ ni l'J. (jo :5' i..
~ .Ji I " l ,,;;g ·m F.i ~ bJl ;hplor.dor d. obJ.-to. ,. J;l X >MAtnUNEI .n,ib. se...o det. f.d"'~'l • x
••
•
"
-
Perrnit~ v " •
"f1(Jmer~ (9, 2)
numer~ (9, 3)
Narro, e de columna Tpo de d<ltos
prOo:od
c""tkJ M
preoo
P,op« d. d« d. <ol" m ., .'-------
~1J 11':1El E"pecr ~acÓl de cDUma cantdad' precOJ
(Fórrno.>a) contdod*prec Oo
Per>i>tente No
,8 Especf ~acOn de kJentkJ~ No~--- --, P",.istent"
I
• I
"
••
, I"';;r Ro<t",-,,~ ,,",
'"
~ ~ MArITUt jE Z ~)(Jl *rm9,O,IJ 9~ ·"1
.. L;¡¡ B"" , d . <h t o,
~ B,, ~, M d,to' del",t",,.~ c=.J ¡"'ton.. .,. " d. b >< << d. d..o,
~ lj mlb,,,,¡.,¡, tM
~ [J'~9"m~' d. b~,. d. d.t~'
~ T.bl .,
~ 1:::1 T.bl.. d.l m¡. m.~ l::l <ibo,d.nt<
~ D <lbo,c, I" _I.<t ,,,a~ t:¡;¡ C" lu m na,
f id_I. <t (Pr ¡nt , No~ moJ.el « h,,( l l),
III '.c.f." I"'>tetom•.III <o<k lr ( <nt, NUll)
~ D (1,,,,,
( on<et .,, · I ~l • T
, 1
Hay campos que nos ayudan mucho. como son los campos catculadcs, la idea es no grabar
directamente datos qu e son calculados, en el ejemplo el campo "total" es un cálculo de
"c antrdad- precro" y de la forma que está definido no ocupa espacio en disco, ya que 1a
propiedad pe rsistente e~lá como "no".
RELACIONES
Página 9
Visual FoxPro 9.0 y SqlServe r 2005
, , XRel.none T.bl •• Y column•• X
R, I ,,¡~ ,N~mbr< d. l. r<lo,,~n:
fK_du I fK_d.·.._f."ura_( ~b._f.ctur.I :JT, blo d. <1,,,, p,¡ncip. l: T.b lo d. <1;..... . ""no:
I..b. f><t", ;¡ - 1 Ideu 1ocw,. 1
,dJ o" 1,d f." - 1
I ' 0' 1 A" l't.. 11 ( 0" " 1,, 1 '" I
p etectone s de e te ve e xte r ne L?
Relocm 5eb::cio:mdo:
f K_detaJ a( tl.ra_COIbeJact ~',¡ Edil", prnp~d~d ", p",~ . 1 ,elación exi<i:eot• . IFK_det~J"cter"flodJcto
I 1
El (General)Com proru r datos exist",,=es Sí
8 E5PO(f o::ocm de t~b~ YcoEl Diseñador de tablasEl E5PO(f o::oc¡,)n de IN5ERT YL
Exigir po'"~ ,epi k:ocm sExioJ~ rest, icció n de cL,ve ex Sí
8 Identidad(Mombre) er_det"J oc ter~_c~J octur~
'D " Ir>~1M De5Cr\xm
( I( 1 I II\greo'" Elirrin" rc~"'"
Teniendo ya nuestras tablas creadas te nernos que relacionarlas, ¿ Por qué re laciona r1as?, hay
muchas ve ntajas de re laciona r n uestras ta blas un a de ell as e s mantener una integridad
refere ncial.
Las re lacione s en nuest ra base de dates e s com o slgue:
Página 10
Visual FoxPro 9.0 y SqlServe r 2005
"Cllente.codcli" con "cabe factura.coddi"
"cabe factura.id tact" con "de ta factura.ld fact"- - -
"productc.o roccd" con "de tatecrore.o roccd"
DEFINIENDO PROCEDIMIENTOS ALMACEN ADOS.
Lo ideal es tener toda s nuestras rnte racocnes con las tablas a tra vés de "stc red proced eres"
Aqui un ejemplo para la interacció n con la tabla diente.
CRE ATE PROC EDURE MI AP L I _ C l i e n t e Sel e c t.,s e l e c t co dcl i ,nomcli , d i r c li ,te lc l l fr om c li e nt eCOGRANT E XECUTE ON MIA P LI _ Cl l e n t e SELEC T TO l usu~ r i os_e xec utel
co
CREATE PROC EDURE MI AP L I _ C l i e nt e In s e r t ~
@c o d c l i i nt o ut p u t,@n o mc l i v~rch~ r ( 50 I ,
@d i r c l i v~ rch~ r ( 80 I ,
@t e l c l i chs r ( lO Ixsi n s e r t in t o clie n t e <n o mc l i , d i r c l i , t e l c l i) VAL UES{@n o mc l i , @d i r c l i , @t e l c l i)s et @codc l i - I SE LE CT @@IDENTITY )CO
GRANT E XECUTE ON MIA PL I Cl ie nte I nse rt s TO [ us u~ r i o s_exe c ut e]
CO
CREA TE PROCE DURE MI AP L I_C l i en t e_E di t ~
@c o d c l i i nt ,@nomc li v~rch~ r ( 50 I ,
@d i r c l i v~r ch~ r ( 8 0 I ,
@t e l c l i chs r l lO I
"upd~t e clien t e s e t nomcli - @n o mcl i , d i rc li - @dl rcl i ,telcli - @tel cl i whe rec odc li - @c o d c l lCO
GRANT E XECUTE ON MIAP L I C l lente_Edi t~ TO [ u s u~ r i o s_e xe c ut e ]
CO
CREA TE PROCEDURE MI AP L I _ C l i e n t e Bor r ~
@c o d c l i lnt
"del et e f r oro clien te whe re co dc li - @co dc liCO
GRANT E XECUTE 0 11 MIA P L I Cliente Bo r r ~ TO [ u s u~ r i o s_e xe c ut e ]
CO
Página 11
Visual FoxPro 9.0 y SqlServe r 2005
Si des eamos hacer un diferen le select o otra inte racción con nue stra ta bla tendría que ser a
traves de otro "stored procedures " jos procedures de ejemplo son bas tante haslcos pero
suñdentes para las jn terecocnes bastea s que se tiene sobre una tabla . A igual modo se tendria
que hacer con las de más ta blas (producto,ca be_factura ,de ta_factura).
Página 12
Visual FoxPro 9.0 y SqlServe r 2005
CREANDO LA CAPA CONEXIÓNl a d ase conexión tiene la siguiente composición :
~....... , "'1'1 _." 'n~
u'o<Il1 " ,;"g"w<t[11' <1¡;"gd"'O<!' I : . trin¡¡dtl{ll , .!mqad(1 1 ' "¡;,,gnoon!11 ;"t
.1OO g, ~ouod. u. u ..",g, '""'00 JlW" ' '''''l!. ""uoo" Orv "rlll~. om","" "" . "",g , ~O""O" "dO '1OOg)
,,can• • i<>n
con'ClaO<l esc.onec180go"cool)
'''0<"''..,1, , tn"ll
_CIJ rsa< : .tri"g, ~,,,,,.;. .,ri<'\i
ExocSp(",,"oda _ Sjl: "ring. omrado prnto_ ' "';"9, ."tra<lo _CIJfSOl: _ul,g, ",,"oda _ ti¡>o ' .!mq¡~>""SOl.(onh.o _""""'" .,.;n•."" UoO_ _ ",1, " ,;"g)lIOtme"oa¡OO
CLASE BASE
........ 1 -
. 0
_.e"'"'~,.. O","e~
••• 00 j 1... o ", c ,
m doloco... """'o, "O"'.., .,d~,.•... ~u l" 'ook,..""" "
"'''"O" .." L" ' O ~, ' 0"" ">OO,",CTID ,.,n""". u. uo n e . P"". OC " . ,, "' . od, .~o>
<un"io n " 1c ,_..,v •• "r1"g~ . _~ " 00 " " "" . P" " " " ,, ' nO, _""" o. """"'h1•. • " vi""" ~." ,eiffi ' _ " ' V)
t.,,, ,",""no-~ j " ,,~ '_="''" '" pyn-a l"n~ U"":elu• • "<i~._~: i<dm , _ " ""
e h .. , "" • • "" "" ' _ "'"" " , ",' " 0 11 t."'~ '_"""tb " , ,,., O" - ')_.e ,, " off, oc o" ,," off0 0 ' o o M '"o"t . no" h off
. H
'"'"
.0.. .. • OUO'-.-" "..-.. ".. • •.. o o
o.e co" ury_.e o ."~,
, oc do "'0' ho u,"
' o t . N'"'_.e ,.,",atar
.=.~_o_,,,",,,
Página 13
Visual FoxPro 9,0 y SqlServe r 2005
Ahí notamos que la clase base está basado en una clase "ses-ten" y se ve la creación de l
método "init()", que tiene a demás las prop iedades pro te gidas como servido r, usua rio, pwd,
etc. Y e l méto do "init{¡n recibe paráme tros y le asigna a las pr opiedades mencionadas.
CLASE CONEXION
,OC"'" _". o"._e......,.•• , ... e h lo
¡, """H e.' ,,"'""oe""~ ·p "v., · " •.~""., , ., ..,"'•••• " ,vi"""·' DAn""~· , . "".11< < ' ..., ,, , . ..." I.cs.He"'" ,~,.u 1>,0" ",","" ' _o' d'""'
" . "00 ",0" ' .",n"" 10' "' 01 _ '1"" "" ""' ·
v " '""S OL<X' C I ~o" . -nE ., . _ ..,. " r o >o " . U~ 'Q' ...OU<e ' . , , ' 0 ' "."0"
. 00 , '."",.R1!""'" . ~C ON
' '1Pn '[')!"''''-'''e'"oc"' ""' o"noo~
"' '''' Neh'" . =0"
" ' h 1o . " OO"-'0c"OLD" , ,,,"n:CTC "" " ~OO" '
,,"'''
_ re "
Es una clase basada en la clase "Base" en cual cuen te so lo con tre s métodos, el primero e l
método "conecta" hace uso de las propiedades de la clase base com o drive r, usuario, pwd,
etc. La principal función de l mélodo es crear la conexión con la base de dato s y reservar dicho
número de conexión. Adema nota mos que cuando el usuario no es "sa " o "admlnls tradc r"
ejecuta un rol , este rol es aque l que tiene accesos a los "slored procedu res " porque los
usuarios no tienen acceso directamente a los "stored procederes". menos a las tablas, si no a
través de es te rol ' usuertceexecute", que es un rol de ap li cació n.
El método "ge tncon"lo único que hace es devolve r el número de conexión a la base de datos.
y el método descone cta derra la conexión a la base de da to s.
CLASE EXECU
Página 14
Visual FoxPro 9.0 y SqlServe r 2005
DEFI NE CL ASS EXE CU a~ con~x ion
PROTECTED ~ql , _c ur~ o r , MENSAJ E
PROCE DURE ExecS p ( SP a~ St r ingB, pwt o ~ a~ ~ t ring , cur~o r a~ Str ing, t ipo )Ir EMP TY(_ SP)
THIS . HENSAJ E- "5QL UAC IO"RETUPN - 1
ENDIrIr EMP TY( pwt o ~)
•
pwt o,, - ' ,ENDIr ~
THI5 . Con~cta ( )I F E MPTY (_cur ~ o r )
DEU-SQL E XE C ( t h i ~ .ncon , " E XE C UTE "+ SP+" " +_pwt o ~ )
Ir D:!:U<OA:!: RROR (_ ERR )TRIS. MENS AJE- 5TR ( ERR( l ) ) + ' '+_ ERR (2 )
n SETRIS. MENS AJE- " "
ENDIrRETUPN DEU
n SEIr t ipo- . t .
D EU-SQLEXEC(th i ~. nc o n, " E XE C UT[ "+ SP+" " +_pwt o ~ , cur~or )
Ir DEU<OAERROR (_ ERR)TH I S . MENSAJ E- ERR(2)
ELSETH I S . MENSAJE - " "
END Irn SE
Ir ' E~PTY( pwt o ~)
DO &_~P WI TH pwt o", c ur ~ o r
DEU- 1ELSE
DO &_~P WI TH cur~or
DEU- 1~ndit
Esta clase basada en la clase conexión es la que al fi n permite hacer la inte racción con la base
de datos a través de este método "ExecSP" pasan todos 10 5 "stored procedures" invocad os de
nuestra capa de negccos. Controla el tipo de "ste red procedure" si devuelve o no un curso r y
adem ás con el parámelro"_tipo", se podría de te rminar el tipo de origen de base de datos, en
lo pe rsonal solo he tenido dos orígenes uno el SQlSERVER y Base de datos nativa de VFP. lo
único que diferencia es la manera de ejecuta r elvstored proced ures" en e l SQlSERVERes el
NEXECUTEn y en el VFP es el NOOn
Cualquier error ocurrido grabara en la propiedad "mensaje"
CREANDO El OBJETO CONE
Ya teniendo nuestra clase crea da la pregunta de todas maneras e ~: ¿y a como lo uso? , aquí
viene e l ejemplo :
m . 5 ~ RV I DOR-nMI 5E RV I DO R n
, •
Página 15
Visual FoxPro 9.0 y SqlServe r 2005
m. USUAP I O- " J P E; PE; Z"m . PWD-"MI PWD"m . Dri v~ r-" SQL SE; PVE; P "m . Db - " HI BASEDE;DA TOS"
m. d d i -"AP P-HI SO~TWARE PERSONAL; LANGUAGE -E spdñ ol"
SE T PROCE;D UPE TO b d s ~.p rg , c on~ x.p rg , E XECU. F RG
con~-CPE ATEOBJEC T ( · E XE CU · , m . S E RV I DOR . m .USUARIO . m . P WD , m .D ri v~r . m .Db . m .d
di )SE T DATASE5SION TO CONE . D d t d S ~ ~~ i o n l d
SE T DE LE TED on
Página 16
Visual FoxPro 9.0 y SqlServe r 2005
CREANDO LA CAPA NEGOCIOSPara es ta capa estoy utilizando las clases no visuales de VFP que son los de tipo "Cuvtem", que
pueden se r reemplazados por el que má s se adecuen por ejemplo tipo "curscradap ter".
l a idea es tene r a lgunos méto dos básicos de interacción con nuestros "stc red procedu res"
pero a través de nuestra capa de conexión.
Para e l ejemplo crearemos e l obje to d iente que es laque interactúa con la ta ba de cl ientes.
N."", 1!_J?d_ A~" I,A:!"".-'.,:,;o¡,1i>TW~ e " ", "~oW~"h",e"'.-.r
,"~o
W·l,~ "h:ld , PWlc, ,, e 'o ", "~o~,n1,,",--d"',, ,
"~o" , , PWlcoodol p 'o ", "~od;,rl; e 'o ", P,Need" ,
"~o;' 00' 0 ,
"~o1. "_, ,,;.00< , P,N e~o~ e '" '" "~o"u",eI; e " ", "~o
" '00' ,"~o
,ee cll ,"~o
"'Id; e " ", PWlc,~>do ,
"~o
( dil P'OP.,tl i¡'¡oIhod - pl.>nll.... .vn Iche . "'1
r'? e'""ettoes - oldntl""'.V'" (e
<lil
Tenemos como propiedades los campos de la tab la, y los métodos [select, inserta, edi ta, borra,
valida, etc)
Aquí la programación que tendría los mé todos
Página 17
Visual FoxPro 9.0 y SqlServe r 2005
~I
H"H'H~ c u r "" rWn H eh"
" ¡""TY I_ "'z. or )_Cur :50r ",, ' o'~_de_r,ürtJ'e cen ou l ll
end,'" U,;," (_e n r . o C)
U>' E lli , 0 =0 00
000"
" CDL• . ~X. C"" l ' ~ I lI' LI cli.no. , d . c t ' " , _ ouco " r) >0SEUCT " C""SOR
. alias ' C"""OR- -'"SE
J]j . 1","" , .... , •
En el granee se nota daram ente la inte racción del obje te conexión.
l a idea es ru ando se invoque este método es la de devolver e l cursor de la ba se de da tos. Si no
se le envía como parámetro e l nombre de l cursor opta ra por po ner un nombre tempora l, en lo
persnnalla mejor forma. Cualquier interacción con el cursor devuelto lo hago a tra vés de la
propiedad N _alias" ya que es la que tendría e l nombre del cursor asignad o.
",", coo-.<."'< u Th i~
u . V~ l1 ctA IJ. )
u . CODCL I~. COOCL Iu.llon :L I - .NonCL In>. D<p eL I- . D<P CL Iu . H L C L I~. UL CLI
, ~ X7 70 5QL U05HüW
? 1 ~. e OdcJ. " n . no.-.c J." '.'11 . d10 0 11 , -C11 . t do 11EN OU K.,.
If c en" . ~ '" c~ " l ' ~HPlI~c 1i ~ n'. ~ In, " r-t o ' , "~" >0. " o ""'1 1 ·~ . co rto J.l ~
Cu r _ . ~J.'_
B ,'..n" "',,,"~•~I ~~---=---:::=...:.c-==-----~C'
<~aJ .> .d
It U~ edl Cur l
~o1~c t " CurI n"~ " Iuto , C u r <rom "~mY~r
' n~t<
h o c h o · . T .
.""=d;~- c ono . = t"o n '''i o 1)<ndif
.nrti ~
. nct~1th
h t u m he oho
Página 18
Visual FoxPro 9.0 y SqlServe r 2005
Con es te m étodo se hace la inserción de datos, además no tar emos que la variab le "m.c cddl"
tie ne un @ ad elan te . es porq ue la variable en e l "stored procede res" "@codd i" es de tipo
"ce tpu t", des pués de ejecu tar este pro cedimiento dicha va ria ble tendrá el correla tivo
asignado por nuestro campo "ldentltv".
Además antes de ejecutar el "stored pr cdeccres" pasa por un filtro que es el método va lida.
este método como su nombre lo dice validara la infor mación como en el ejemplo valida q ue e l
"nomdi" no es te vac íe .
~e lie nte. Vd h ddr,a ( ld' d 1 ¡;J¡jJ~1 - o
~~
~Vll I ~ ,~ vdid "r ."
JOQjecl I"," c¡"nte P¡oceroe y
Parart'l<' t ~ r ~ o r 1g~n A-
L o c al v a lido-lJ i th Th i ~
LV, . v a lido · . !'".'( Til r':l.,} -"o CM~
r::.i' Propertie. - planilla•.veH IC a~ ~ o r iQ~n· l-"o C a" ~
,-"," cliente CM~ ~mpty(. nomc li )
. ""' n~aj ~ . , Falt a ., Nolillr ~ ,., c li ~nt ~'
Melho< l oyou{[! Oth~ rw i ~ ~-
" ", v a l ido · . T .'¿S . :" f,,"C\ ' -
!ndca" ~;;. . ~~-¡Deloul CM ~ or i¡;¡~n· 2.., Wrt eM elhOd -
_.....bI."'!'!':"'.,~.d.,,¡~s [U. e, ' "o C a" ~. ......,
CM~ ~mpty (. nomc li ),.., borro[IJ' ''' :
.., edila IIJ! e'. men~aj~ · ' Falta " Normr~ ,., c li~nt ~'
.., "s~r l, [U• ." Oth~rwi~ ~
,,"' lena_"oriobles [U• ." v a l i d o · . T ..., selecl Jº'~'- . ""' n~aj ~ • . F ..., selecl2 ...!~,,,~o~! !ndca" ~
Oth~r"i ~ ~
"o C a" ~
CM~ ~mpty(. c o dc li )
,,'oc;.me n~aj ~ · ' Fa lta Có d i go '" cli~nt ~ , 'y
,>'
De igua l mane ra completaremos e l método "edita" y "borra" con sus "Stored Pre cedures"
respectivos.
Página 19
Visual FoxPro 9.0 y SqlServe r 2005
CREANDO LA CAPA INTERFAZENTORNO VFP
";I ...."".oIt VI.... "'....
':".."".."'IIIIII'!"III······ ""'·~co c ' \Dra j .ot , \l i b v f " ql ..:J, n ' IT~ ro " , \,<o )"","\m 1110"',"'
PREPARANDO CONTROLES PERSON ALIZADAS
La idea es copia r todos los controles de VFP y ponerlos en una clase propi a. en este caso a esa
biblioteca lo nombre como básico. a estos controles le ponemos nombres mas senci llos, como
por ejemplo a los "textbox" solo lo llamo "txt", a los "labe l","lbl", e le. Además de
person anzalo a nues tro gus to en ru ante a aspecto. Para copiar dichos controle s es suma mente
sencillo, lo que ha cemos es crea una nueva biblioteca de dases y nombrar los contro les ya
existentes por uno propio. En el graflcc se ve la crea ción de nuestro control pe rsonalizado "fbl"
basado en "label" y almacenado en la biblioteca de clases "baslcc"
Página 20
Visual FoxPro 9.0 y SqlServe r 2005
'-D ¡;¡¡¡: Id ~ [g¡, ¡; I :r,;, la "" '" ! ~
--- - -~- ~
r;' ro v I§' ~ "t 3 II!:J '*
form neskme- - FormDocl _
' / l o rm l
, .= L.~bo:;ll =
'.1 Tttl. Form Control..
seseo
•,.. , ~ mnbo(BASICO)
~ edil: (BASICO)
~ ~<t (BASlCO)
[J:5J pag (BA5ICO)
,.. , ~ plúme(BASICO)
~ spim (BA5lCO)
iJf-- ---imi @ ~ [jill ..~ fiI
JC~g¡ [b5J D@
~,AItJ ~ ~
abl 1(')1 ®J ¡g¡ ~ ~
:¡¡g, Cl !!!!II O co ~
Ó ~ '!, .., 1.<' CII.
• ! f':
Página 21
Visual FoxPro 9,0 y SqlServe r 2005
y ~ i es posible que pueda tene r cierta interacción como por ejemplo:
Al con tro l "textbox" vamos a cambiarlo de color cuan do esta selecdcnadc
'JI forml
[I======-_I
El código para te ne r es te electo es e l siguien te : La programación está en e l "los tfocus" y el
"gc ttocus"
[I..ss Designe. - b..sico,YCK (b,tl
ÜQiecl 1¡¡¡¡jJ¡,l
===-__-'"JJ.cI 1<I
THIZ . Spe ~ i a lEff e~t -O
THI S . B~r derC~ l~ r- RGB ( O , O , O I
THI S .T~reC olor= PGB ( O , O , O I
t h i " . BackC o lor-PGB (255,255,255)
dJ
THI S . Spec i a l ! t t e c t- lTH I3 . B~rde rC o lor- PGB ( O , O , 2 55 )
TH I3 . r~reC~ l or- RGB ( O , O , 2 5 5 1
th i " , BackCo lor-PGB (2 55 , 2 55 , 21 5 )
-'.D•
Esta demás decir que de ahora en ad e lante solo usa remos nuestros controles para todo tipo
de interfaz, des de un lorm, textbox, grid, labels, etc.
FACILIDADES PARA EL USO DE CONTROLES PERSONALIZADOS
Página 22
Visual FoxPro 9.0 y SqlServe r 2005
Hay una he rramien ta que trae VFP que 51' ll ama "tcolbcx" el cual lad lita el manejo de nuesn cs
controles creados.
Aquí un ejemplo de su creación, anexa r nu estros controles persooatnedos a dicho "tcnlbox" y
a final la creaci ón de un formulario basado en nue stra d ase "torm" personali zada.
l. $ ¡¡ [S "LNiP.iiMJI File Edil: \le" Too!> PrOQl'om Window HeIp
FoIder '" which to ereote Toobox:
To. Toobox dat o toble cOOd roe< be fO'.Xld or does not ex~t ,
Ic:\docL<rJeni:s ond sett ngs\miguel ontenez e\dotos de prcqomo\rr ~
= =-- 21ro ,new Toobox '" the " , ' " ' " ","
r , ocote oc existO;¡ Toobox
~-"l oca t e ! [reate ToolboH
_____~~=!J"'""
l' l l j
Página 23
Visual FoxPro 9.0 y SqlServe r 2005
! "11~ Toolbox
I ========:------~- (DI '"I File Edil: Iftew TooIs Progr= Wh'ldow Help
lo .... I"'c.l''' .. I~~Fovorites
Tex t 5cr ops O!!!!!VFP Bose elass e,
VFP FOlXldotoo e lasses
My Base C~ses
My XML Web 5ervices
My ActiveX e ontrols
,,-..Add C1a•• l,brary
Add o doss library to "" ex¡, t",. c"" egory by ,elect",. orle frQfl1 the dr op-dwIn or add o newcotegory by typing o new n"",,, .
c.otegory : I'C',',,',:-- - - - - - - - - - - - - - -iJd oss , Il r",y: IC:\PROI CTS\UTILIDAOES\BASICO. vex [JI
Clic derecho y "add dass u brerv"
Fovcdes
I, ! ! M
· 1001>0.
1D_~ IiIIj~::1I,~ ~ e¡.. ,..sr
~ , ""', ""'" 0"-OlCO)
: ~. " ,,;,,5:CO¡
en " "pr o J ~oC~\ lilivf• • ql
,U H nI ro c : \ o r o ) e o,, ) """M""3e HU," CLi.OO
","" "'"DoI",
~=t~\
" "", elm' ''",,Add C;<,O""
"ot',,"ú<.,,.,C" b'cl" '"00,,
OC"'" Lo,k~ O;,obYti<I, T" t
~ 81""" '" ' 00
W ''')(OIf.n (B· ' · --'-,,' d (' -c_.:;:_.,.
". 0Dl ("' )(0', ,-,j IB'5ICG)
'",F""",,,' '''''' 'a'P'_ B", 0 '
_ 'ound~
M, ,"oel.
M" ", "'"
M, ,..",,"! G'"",~ PJ
I
o
I~~~~--I=
""': 1118
Página 24
Visual FoxPro 9.0 y SqlServe r 2005
1" ".mlI>J 1o", 1M,n",,¡' I l'"", 0" " I F",,, ',,~I . ·...._(,~,,"'"" .,""'.,'o.•.•
SpKt"" th< .. "'..... " ,' _ """,;"'.-..J d ,,,, ""','y,o.'cert ,;" , "" ot¡"cl', C~T
•
1- " ,
" ,,""', '" 118"oiJm F, ,,,,,
" C~;; ''' 7;;'; '
D ,~IelCI" o"" Dx ' '''' F f~0{",1!. ,
f Ml'~c T ',T,'.""..cr:.'-''''''':J.>Fii,'d'" ,'.?N J:!, ' fi;>¡;COO¡;;:;¡; ¡¡'
K" P". ;,~ r'}'o;;, ID <JO:;¡i':N,." r...lº,L[º ' ''''' ~ . ,o , ,~ <l': ' '''' .r),¡~,,~ . ,""O,,,,, .. 3o Llb:~a; ' :T '
' OLE O,¿¡:¡;¡~ ¡¡ :'Ú ;;¡¡¡Odp<i;;ctj " " ,_.,., _p",,,, 11
'" P<lIeoO"" n ,-p¡.R."".' .1e' '''''..!'.,.,' .h""."T.~"' . , ' " ,T" ."!..", .-,~J : · : : · : : · : : · : : · : · .:J
A Illl lIll <:] (! '!>~ IV ~¡~ c: ¡:¡¡l'iI .~ ~. ~ D
'l!1 n f~"'... Ó JL
""' ,," 'IIl @, 'llll',1,; V '<", 01 e !'I
[¡;j] roc' 'O.,
---.J1l._1""' <> Actw",,"
CREANDO CLASE MANTENIM IENTO DETABLAS
Crearemo s una dase base basada en "Cmd" de nuestra dase "Base" con funciones cernunes,
como agregar. edila, eliminar, sal¡r. Y otra de Aceptar y Cancelar
Página 2 5
Visual FoxPro 9.0 y SqlServe r 2005
Al D,¡o ~ el>¡ed, Lo;oul Olh<f F,w,,, I
~
'.... f:;;;S T -.T 'lIl' p.,I"j(',... \o/he¡ -1
I ~ ~ '
(;¿J] P[OCeOJre: Ip ucr
oh " . Parent . añaje ( )c h>o Lo <m. Reü~~h
O"e'l: I¡:¡ cred1
; Cmd l Cbek _ I:l X
, p
ti: Pr" portles - t"ol•.vc. (mltobar ra ) ~ 13
t t.1~ . ear e r.t . ~orr a 11t h i ~ t D r~ . Retr e e h
~'DIr
<Tiil
Crea rnos los métodos (añade, edila, borra, etc ) en la dase padre en este caso el "containe r",
y a los bolones aslgna mos esos el código para tnvocarlos.
y la clase "o kcance!" de la siguie nte forma :
Página 26
Visual FoxPro 9.0 y SqlServe r 2005
liEl Cla55 Designer· tceu.ecx lok... _ D X Iiil' Propcrtlc, toOI'.YCK (okcüncc
~l11
;'
":~ ¡;;o ncel""
~,.< , r>1
¡ cmd1.Click _
,Ifil okconceled
Objecl I¡::¡ cmd1
th i ~ t o rm .grab a l )
~I Proceche IfJ Ci ck
eT;;l
Si cmd2.Click _
OQioct :¡::¡ cmd2 (i} PjocedYle; I i' C1ck
thi~ to"m. l i mpia ()
CREACiÓN CLASEDEFORMULA RIO DEMTTO.
","" ,
1-; ';;'eh1" ",,","'''''e~L '''''''ool .· . 7.'hlo'o<~, " ".'0,"-,"0 11
cth n ,",ono .. ' omU Meta
, odeta-,e o oo",o "
t ttM<W02.lnII • ~ X
,oraba_'e~oo",o "" .<tU,,,,,cevato," " ar 11)
' ","veth
<T; 'I
I
t h eo'ono , Meta~ "th, ",or<" aot , vatoo Jo"" (' )
" , 1
Página 27
Visual FoxPro 9.0 y SqlServe r 2005
CREACiÓN DE LA INTERFAZ PARA El OBJETO CLIENTE
Empezam os con el código :
CREATE r ORM clie n t e ~~ f rmd~t~2 r ROM t ool ~ .
111 fa rm ~o.i~nor d i< n1o.•<~ _ :c X
... Montonm.ronto do C ~onto. _ I:l X
or ecCl ón
~. Actc{;""" .S "" .Ifl 'ó""L "&' ~ctcL"""T.i>tlJII."",J..~ ActO:""",,,,, O' Doeo "'" "ppo,' Ac'O:""",iYCm;.;:;,;;:¡ .. Tii¿,::¡e¡- ~,~ Fcm'" .lfl"",l.~...I"f'U:ft.0.sk. .11.1"",1.~ M"lenglh O
~ ¡.¡ "roW;:¡¿¡¿,;;; i ii¡:¡;;;r ~" O ~ ,~. '"
~'~1 ;"3~ M<lhods~oJl o;¡:;< F, v>lres
11 Pro• .,".' - c l.nl•."'-x 1!!!IIiJt3
.'
c ;a I ~ O Nomm.. .
1I
Lo ú ni c o q u e t e n e mo s q u e hace r e~ nuest ro fo r mulario es e~lazar
n u e s t r o s objetos int e rfaz con n u e s t r o ob jeto negoc io , e n est e caso
e n l a z~ rl o s p or medi o del " c o n t r o l s o ur c e n del "Tex tbo~n, en c~da un o de
es tros con t roles en l ~za r con l ~ p r o p i e d a d e s d el ob je to ne goc io , en el
e j e mp l o es el I "t~tl " con cliente .codc lil , etc .
Uan v ez h e c h o eso y a p o drem o s pro b a r nuestro formu lario , sin
o lvid~ rnos q u e deben se r e j e c u t a d o s desde n uest ro progr~ma p r i n c ip al,
ya que ese p r og rama hace l a conexión a l a b a s e d e da tos adem~s q u e
carga nues t ra configu r ación de usuario .
Página 28
Visual FoxPro 9.0 y SqlServe r 2005
.. Mont"nmient. de Cijent". _ Q X~-------------------
""eo:.x,Io/ >"fu 1'16 Ln o - CoIilü
,~~---
[<reCCl on T, Ie(,
1<I uI
P ar a el e jemplo d e f ormu l ari o s e pus o po r d ef ecto qu e se va ~ a g r e ga r
un c li e n t e p or eso que apare c en de s ~ct iv~do s l o s botone ~ d e nue s t r a
b arra d e m~ nt e nimi e nt o y ~pa re ce activa d~ el graba r o c~ncel~ r .
Al hacer cua l q u ie ra de e s tas d o s a CC10nes activaran l o s botones d e l a
b arra d e ma nt e nimi e nt o y desactiva r~n el gr ab~r y c a ncel a r .
.. Milnt"nmient. de nent.. _ -º- X
Actuoli1O
"',""
95 é4
T, I,(, "' ,- Al eYd
Ci reCCl on
'" l. torre 145
) jj , n OGrri nuuez
Juan ~ a n n ue
Cad'Jo Nomt reI 1 Ju , n Pere,Codg< D
T~ehm
Ir~"'"~'~=====I '
Página 29
Visual FoxPro 9.0 y SqlServe r 2005
Có3i<p D,,, peru1 46l.im , ·
,,,,._,
Di<'ecCÓ!l
od , '",,1<" Busca'
, ,,,,rona955 45241
" 1>1
Al mome n t o d e e limin~ r la c la~e y a t i e n e e ~ta pre~ un t a d~ a ~ ig n a da . As i
qu e V~ a ~ ~ l i r en todas n uestra p a n t a l l a s d e l a mi s ma ma n e r a .
• M.ntenimiento d. Cliente, _ [J X
Edt ",
1I
C Od o;¡ o Nor10' e DI'eCCl on
1 ..<J , n P.'o, Pe roz , ,, I, lorr0 145
'-VI
r=~"ó=" ===='"""":'::'=======1-
"'":":":'::==J1_
,<1
N ue ~t r a bús queda t a mbién e ~ t a i nt eg r ada e n la c lase y toma e l no mb re
d e t o d a s l ~~ c olumn a s d e l "g ri dN .
Página 30
Visual FoxPro 9,0 y SqlServe r 2005
... M.ntenimlento di! Cllent. . _ I:l X---------------------
' ., .. y,
;;; MlgJ Norrm re
o O'denor 1 Buscor
0"""00
[ch ,
,<I 1>I
E st . s p .nt . ll . s t.mb i~n son ~Re s iz.bl e s" p .r. l. comodid.d del
usu. rio.
Página 3 1
Visual FoxPro 9.0 y SqlServe r 2005
Nombre
1 _
I~~~~~~-
1_-
3 Juan Manrique
Buscar
Gl'ab",
hdem á s q ue ~oporta n se r c~ rga d~s ma s d e una v e z y sin p r ob l ema al g un o
y a que uti li zan cu rso res c o n no mb re s a le~ t o r i o s.
Página 3 2
Visual FoxPro 9.0 y SqlServe r 2005
códioo O
ld'"
'usear
Fo'"
A,rel>'< ~"
,.. Euscar
":na { O"'".~. .~
•
2 J u,", Do m
eooc.larGrabar
Dteccoo1" potU " " "m - colóü
Te~rOl'O
1«5455'
P,e ,O'
P ar a hace r la s i gui~nte p~ nt all a S~ nos hac~ muy s encil l o , l~ tabl a
cl i~n t~ guardam o s con el ncmbre d~ pro d u c t o, c ambi~mos nue s t r o ob j~to
n~go ci o d~ cli~ nte p or produc t o .
Página 33
Visual FoxPro 9.0 y SqlServe r 2005
El tOrmD"'~.r producto.lC" _ I:l X
"T.. 1>1o do Prociuctoo _ o X
lh Monoi'
1"" ROlI '" P,op.ot." p. ociuclo" 'H I!!!llilEi
l"" PFOJ UCTO 1...'1
"'~Ol'~ei>o±-.JLLo;oo.<~,v"'res.J
¡,¡J I IA."'¡d,
PRDDUCTO- 7¡Dr.'I<ht~
1_ ""~,,~~ _ "_ "~ '"_" __:_~ _ ::;_'::':~'::'=": :: iJi
"',,
» :•••
y e n nue s t ros mé t odo s reempl oz ~mo s p o r o nue s t r o c oso lo po lobro
cl ien t ~ p o r p r o d u c t o y o s i gnomos nuestro co ntro l s o u rce d~ lo~ o b j etos
i nt erfoz o nues t ro n u~vo o b je Lo neg oc i o .
El tOrmD"'~.r producto.lc" _ I:l X
"T..1>1o do Proeluctoo _ I:l X
~~::::::::::::~8 I f trd!:le~ I='00",0 ¡¡¡¡ l E•• • I
U,,~n;
D M"CI1 oOS, D 'A"'," Ilh~' wcrd IRo¡o1.co1;l1
D v¡,." ",,,.-.,j D s".", ",d~.'d I C..-.o~ ID li" -';00 , ,,0,
'mreo [ ,,'eol 1):><""" O [ ,,'''' ar",¡ e III 0Cie'¡'
Il c h ,"~o' '''
IF ¡:f;¡i!!e&- .diC '"- I )
H~~A~HüXI, no:l-'c to.llen' ~J e . 1 ' .' loro r "E"D H. product o, b lanq u e ,._ daC o ~ 1)
.Hfr~~ h
IIIn
Página 3 4
Visual FoxPro 9.0 y SqlServe r 2005
111 '.rm D.''lI',.r producl•.o<x _ ::: x
.... TiO.... doPr.ducto. _ I:l X
..
'"'"''
CÓCl go Des " ,,"ón
COOo' IMPR'I ~ ...
~ I TP. th l , 'crm ~
I F ' , ""o,hoto. i n, o r t"li~' ,,~ l ~rBOX ( _pr o du" co K~n~ 'J '. 1 Ó . lrmr ' 1
r oturn
~"_pr o du ~t Q _BL. n'Iu " _ d " t o . 11. re ~ r .,h
o nd~ith
1; ' rmd<ll..2 1.&r~b" registro _ I:l X
r' jo
y y o p odemo ~ p r o b or nuestro nuevo p~ nt o l l o con lo mi s mo func ionol id~d
de lo p r imer~
e-,,;poón
1~'Ie'~'" [9'
2 Televisor LeD 32"
Ln M"""io
I I
1>1
Página 35