CursoVB08

download CursoVB08

of 22

Transcript of CursoVB08

  • 7/25/2019 CursoVB08

    1/22

    CURSO DE VB

    CAPTULO 81

    ndice de contenidoTRABAJEMOS CON FECHAS, FORMATOS Y CONVERSIONES DE DATOS............................3

    COGER LA FECHA DEL SISTEMA (Date)..................................................................................3

    APLICAR FORMATOS A LA FECHA..........................................................................................3

    Forato !S"ort Date#.................................................................................................................3

    Forato !Lo$% Date#..................................................................................................................&

    Forato 'ero$a*+ao ...............................................................................................................&

    APLICAR FORMATOS A LA HORA (T*e)................................................................................-

    Ote$er a "ora e *tea.........................................................................................................-

    Ma$*'/ar a "ora........................................................................................................................-

    FECHA Y HORA A LA VE0 (No1)...............................................................................................2

    FORMATO A CADENAS DE CARACTERES..............................................................................2

    Vaore a a45/a (6Cae)....................................................................................................2

    Pro'*ea I$'/tMa7..................................................................................................................2

    Vaore a *$45/a (LCae).....................................................................................................8La 9/$5*:$ StrCo$;.....................................................................................................................8

    I$*5*o e 'aara e$ a45/a (;Pro'erCae)......................................................................e'o 'r?5t*5o ore 9/$5*o$e 5o$;erora t*'o e ato........................=

    S/'/eto @ a're$eo a 9/$5*o$e LEFT RIGHT........................................................=

    S/'/eto a're$eo a 9/$5*:$ MID.............................................................................@

    S/'/eto 3 a're$eo a 9/$5*:$ INSTR a 9/$5*:$ LEN............................................@@

    S/'/eto & a're$eo a 9/$5*:$ REPLACE...................................................................@3S/'/eto - 'ra5t*5ao 5o$ IN/er*5()............................................................................@&

    SEG6IMOS MANIP6LANDO FECHAS....................................................................................@&

    A$a*+ar e a e /$a 9e5"a 9/$5*:$ ee7a().....................................................................@&

    Ote$er o eee$to e /$a 9e5"a 9/$5*o$e Da(), Mo$t"(), Year()...................................@2

    Ver e $ore e e e /$a 9e5"a 9/$5*:$ Mo$t"Nae()...................................................@2

    La 9/$5*:$ DatePart()................................................................................................................@8

    La 9/$5*:$ DateD*99()...............................................................................................................@o podemos asi%nar el

    resultado al te4tbo4 directamente como dato tipo Date porque 'ccess detecta que nuestracon#i%uraci)n es espa*ola " lo muestra en #ormato espa*ol. 0ara poder &er el e#ecto debemostratar la #echa como si #uera un 7trin%$ " el c)di%o que deberamos utili-ar es:

    60ri&ate 7ub cmd2echa?n%lesa8lick( Dim &2echa 's 7trin% &2echa Date &2echa 2ormat(&2echa$ ;mm/dd/""; 9e.t4t25esultado.Value &2echa3nd 7ub6

    >i que decir tiene que si queremos el #ormato en sistema espa*ol la e4presi)n sera:

    &2echa 2ormat(&2echa$ ;dd/mm/"";

    Nota: es importante recordar este punto porque$ en ocasiones$ buscamos #iltrar una #echaen una tabla "$ a pesar de que constatamos que la #echa buscada e4iste$ nuestro #iltro no nosmuestra nin%=n re%istro. 3n este caso deberemos probar el #iltro por #echa dndole el #ormato

    +in%ls$ por si 'ccess entendiera que$ aunque &emos las #echas en espa*ol$ el dato est%uardado en #ormato in%ls (un lo$ "a s$ pero pasa.

    @Vistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    5/22

    APLICAR FORMATOS A LA HORA (Time)

    De la misma manera que hemos &isto el manejo de la #echa podemos obtener la hora. Vamosa &er c)mo

    O(tener &a ora de& %i%tema0ara obtener la hora tenemos la palabra A?93. 's$ pues$podramos pro%ramar un bot)n de la si%uiente manera:

    60ri&ate 7ub cmdora7tma8lick( 9e.t4t25esultado.Value Aime3nd 7ub6

    Mani$)&ar &a oraLos componentes de la hora son:

    hh para la horamm para los minutosss para los se%undos

    La separaci)n entre estos parmetros es el carcter +dos puntos (:

    3s decir$ que escribiramos:

    2ormat (Aime$ +hh:mm:ss

    3l resultado sera el mismo que hemos conse%uido en el punto anterior. 3s decir$ que

    podramos pro%ramar un bot)n de la si%uiente manera:

    60ri&ate 7ub cmdora2ormato8lick( Dim &ora 's Date &ora Aime &ora 2ormat(&ora$ ;hh:mm:ss; 9e.t4t25esultado.Value &ora3nd 7ub6

    omo otra posibilidad podramos indicar la hora en #ormato 1 horas. La e4presi)n que

    deberamos utili-ar sera:2ormat (Aime$ +hh:mm:ss '909

    3s decir:

    60ri&ate 7ub cmdora18lick( Dim &ora 's Date &ora Aime &ora 2ormat(&ora$ ;hh:mm:ss '909; 9e.t4t25esultado.Value &ora3nd 7ub

    CVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    6/22

    6

    FECHA Y HORA A LA VEZ (Now)

    7i por casualidad necesitamos obtener la #echa " la hora ala &e- tenemos la palabra >E$ que nos da estos datos.

    0or ejemplo$ podramos obtener la #echa " la hora$ "presentarlas en nuestro Ae4tBo4$ a tra&s del si%uientec)di%o:

    60ri&ate 7ub cmd2echa>oF8lick( Dim &2echa 's Date$ &ora 's Date &2echa >oF &ora >oF &2echa 2ormat(&2echa$ ;dd/mm/""; &ora 2ormat(&ora$ ;hh:mm:ss; 9e.t4t25esultado.Value &2echa G ;,; G &ora3nd 7ub6

    FORMATO A CADENAS DE CARACTERES

    0ensemos en el caso en que ha" &arios usuarios trabajando en nuestra BD$ " cada uno da dealta re%istros escribiendo los datos +como le &iene bien (por decirlo de al%una manera. H eso$a la hora de &er consultas o in#ormes$ queda un poco +#eo por la hetero%eneidad de los datos.

    !na primera soluci)n a lo anterior sera aplicar mscaras de entrada cuando con#eccionamos latabla. 0ero$ como siempre pasa$ en ese campo I en concreto se nos pas). Vamos a &er c)mo

    podemos enmendar un poco el asunto.

    0ara ello$ &amos a insertar un cuadro de te4to$ que llamaremos t4tadena$ " todos los c)di%osque aprendamos en este apartado sern asi%nados al e&ento +Despus de actuali-ar ("o harlos supuestos sobre di#erentes Ae4tBo4$ en un nue&o #ormulario llamado 2aracteres.

    Va&ore% a ma*+%c)&a% -Ca%e.0ara conse%uir que el te4to introducido se con&ierta en ma"=sculas debemos utili-ar la #unci)n!'73

    Veamos c)mo podra ser un c)di%o:

    60ri&ate 7ub t4tadena18'#ter!pdate( Dim &Ae4t 's 7trin% &Ae4t 9e.t4tadena1.Value &Ae4t !ase(&Ae4t 9e.t4tadena1.Value &Ae4t3nd 7ub6

    /ro$iedad In$)tMa%0

    Aenemos un se%undo sistema$ que es a tra&s de la #unci)n ?>0!A9'7J. 3n realidad$ lo que

    KVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    7/22

    hace esta #unci)n es aplicar una mscaraal Ae4tBo4. 7)lo e4plicar el ejemplo aplicado aconse%uir la con&ersi)n de min=sculas a ma"=sculas " no en los si%uientes$ dado que lamecnica es siempre la misma (s)lo tenemos que de#inir la mscara que queramos.

    3l c)di%o que nos podra hacer eso sera$ por ejemplo:

    6

    0ri&ate 7ub t4tadena8'#ter!pdate( 9e.t4tadena.?nput9ask ;MMMMMMMMMMMMMMMMMMMM;3nd 7ub6

    Va&ore% a min+%c)&a% "Ca%e.La #unci)n que consi%ue pasar todos los caracteres a min=sculas es L'73.

    !n ejemplo$ en c)di%o$ sera:

    60ri&ate 7ub t4tadena

  • 7/25/2019 CursoVB08

    8/22

    Inicio de $a&a(ra% en ma*+%c)&a% 3(/ro$erCa%e.7upon%amos que tenemos un #ormulario donde se dan de alta los datos de un cliente$ o de unalumno. 3l usuario que introduce los datos$ para +darse prisa$ nos escribe losi%uiente:

    neckkito neckk ito

    3s decir$ nombre " apellidos en min=sculas. 7i despustenemos que en&iar una carta a este cliente / alumno$ oremitirle un mail personali-ado$ la &erdad es que eso quedaun poco +#eo.

    O)mo podemos +prote%ernos de lo anteriorM 0ues a tra&s de la constante &b05035'73

    omo habris intuido$ lo que hace &b0roperase es poner en ma"=sculas la primera letra decada palabra +indi&idual.

    3l c)di%o para conse%uir eso sera el si%uiente:

    60ri&ate 7ub t4tadena@8'#ter!pdate( Dim &Ae4t 's 7trin% &Ae4t [email protected] &Ae4t 7tron&(&Ae4t$ &b0roperase [email protected] &Ae4t3nd 7ub6

    E&iminaci2n de e%$acio% en (&anco Trim, "Trim, RTrim.

    0uede ocurrir que nuestro querido usuario$ en su a#n de ser e#iciente$ escriba los &aloresa*adiendo espacios inad&ertidamente antes del &alor$ o al #inal. 3sos espacios$ adems demolestos &isualmente$ des&irt=an el contenido del control.

    0ara sol&entar esta +di#icultad podemos utili-ar la #unci)n A5?9. 3sta #unci)n elimina estosespacios en blanco.

    3l c)di%o sera:

    60ri&ate 7ub t4tadenaC8'#ter!pdate( Dim &Ae4t 's 7trin%

    &Ae4t 9e.t4tadenaC.Value &Ae4t Arim(&Ae4t 9e.t4tadenaC.Value &Ae4t3nd 7ub6

    omentar tambin que si s)lo queremos quitar los espacios iniciales (los de la i-quierda$podemos utili-ar la #unci)n LA5?9P si queremos quitar los espacios #inales (los de la derecha$podemos utili-ar la #unci)n 5A5?9.

    QVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    9/22

    CONVERSIONES DE DATOS

    F)ncione% con3er%ora%3n ocasiones tenemos un tipo de dato " necesitamoscambiarlo de tipo. 0ara ello e4isten #unciones que reali-anese +trabajo. Vamos a &er las que considero msinteresantes:

    0ara pasar un dato a te4to utili-amos 7tr(0ara pasar un dato a #echa utili-amos Date(0ara pasar un dato a booleano utili-amos Bool(0ara pasar un dato a &ariant utili-amos Var(0ara pasar un dato a moneda utili-amos ur(0ara pasar un dato a n=mero utili-amos:

    7i es un inte%er: ?nt(

    7i es un lon%: Ln%(7i es un double: dbl(

    Detecci2n ti$o de dato'pro&echemos este espacio para e4plicar que podemos actuar sobre un &alor en #unci)n deltipo de &ariable que sea. H$ para ello$ podemos utili-ar las si%uientes #unciones:

    0ara saber si un dato es numrico utili-amos ?s>umeric(0ara saber si un dato es #echa utili-amos ?sDate(0ara saber si un dato es una matri- utili-amos ?s'rra"(

    7i buscamos$ en la a"uda de 'ccess$ #unciones de inspecci)n$ encontraremos todas las#unciones disponibles dentro de esta cate%ora.

    -no% c)anto% e4em$&o% $r5ctico% %o(re 1)ncione% con3er%ora% * ti$o%de dato%

    Vamos a desarrollar una serie de supuestos prcticos sobre lo que acabamos de e4plicar$ para&er qu utilidad le podemos dar. 'pro&echaremos tambin para e4plicar al%unas #unciones quenos sern =tiles para nuestras pro%ramaciones.

    3n la BD de ejemplo podris encontrar estos supuestos en el #ormulario que he llamado2on&ersion. Los resultados se mostrarn en un Ae4tBo4 que llamaremos t4t5esultado.

    2inalmente$ los supuestos estn desarrollados paso a paso. a" pasos que se puedensimpli#icar o resumir$ pero en aras a la peda%o%a el ejemplo se desarrolla +a lo lar%o.

    Supuesto 1: aprendemos las funciones LEFT y RIGHT

    ?ma%inemos que obtenemos$ por una parte$ un &alor numrico de dos d%itos$ "$ por otraparte$ otro &alor numrico de cuatro d%itos. Rueremos con&ertir todo lo anterior a una #echa.0ara simpli#icar en el ejemplo los &alores numricos que hemos comentado los de#iniremos enel propio c)di%o$ pero "a deberamos saber que los podemos obtener del &alor de un control$ o

    SVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    10/22

    a tra&s de un ?nputBo4.

    O)mo lo hacemosM

    Vamos a &er c)mo sera el c)di%o:

    6

    0ri&ate 7ub cmd>um2echa8lick( Dim %rupo1 's ?nte%er$ %rupo 's ?nte%er Dim %rupo< 's 7trin%$ %rupo@ 's 7trin% Dim &2inal 's 7trin% %rupo1 @

    %rupo 1T1 Uon&ertimos el primer %rupo a te4to %rupo1 7tr(%rupo1 Uon&ertimos el se%undo %rupo a te4to %rupo 7tr(%rupo U34traemos$ del %rupo$ los dos n=meros de la i-quierda$ " los asi%namos a la &ariable%rupoumeric(&>um Ahen 9e.t4t5esultado.Value &>um ] C

    3lse U7i no ha introducido un &alor numrico a&isamos " salimos 9s%Bo4 ;3l &alor que ha introducido no es &lido;$ &britical$ ;> 553A; 3nd ?#3nd 7ub6

    SEGUIMOS MANIPULANDO FECHAS

    Aoda&a podemos reali-ar al%unas operaciones ms con las #echas o$ mejor dicho$ con aspectosrelacionados con las #echas.

    Los ejemplos de este apartado los encontraris en el #ormulario 22echas de la BD de ejemplo.

    Ana&i'ar e& d6a de )na 1eca7 1)nci2n 8ee0da*.0ara anali-ar el nombre del da de una #echa podemos recurrir a la #unci)n Eeekda". Dicha#unci)n nos de&uel&e el n=mero del da de la semana de la #echa que estamos anali-ando. 7uestructura es:

    Eeekda"(#echa a anali-ar$ primer da de la semana

    3l ar%umento \primer da de la semana es opcional$ " por de#ecto es el &alor 1,Domin%o. 7i

    1@Vistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    15/22

    queremos que el primer da de la semana sea el lunes deberamos especi#icar un .

    0odemos ob&iar este ar%umento si nos au4iliamos con unas constantes de VB. Dichasconstantes son:

    &b9onda" &bAuesda" &bEednesda"

    &bAhursda" &b2rida" &b7aturda" &b7unda"

    7i sabemos un poco de in%ls &eremos que no hace #alta e4plicar qu si%ni#ican cada una delas anteriores constantes de VB.

    Veamos pues c)mo podra ser el c)di%o para saber el nombre del da de una #echa:

    60ri&ate 7ub cmd>omDia8lick(

    Dim &2echa 's Variant &2echa ?nputBo4(;?ntrodu-ca una #echa ,2ormato dd/mm/aa,;$ ;23'; ?# >ot ?sDate(&2echa Ahen 34it 7ub &2echa Date(&2echa U'nali-amos la #echa introducida 7elect ase Eeekda"(&2echa ase &b9onda" 9e.t4t25esultado.Value ;Lunes; ase &bAuesda" 9e.t4t25esultado.Value ;9artes; ase &bEednesda" 9e.t4t25esultado.Value ;9ircoles;

    ase &bAhursda" 9e.t4t25esultado.Value ;[ue&es; ase &b2rida" 9e.t4t25esultado.Value ;Viernes; ase &b7aturda" 9e.t4t25esultado.Value ;7bado; ase &b7unda" 9e.t4t25esultado.Value ;Domin%o; 3nd 7elect3nd 7ub6

    7implemente haceros notar que para controlar la introducci)n del &alor por parte del usuario$ "que realmente introdu-ca una #echa$ hemos a*adido la lnea:

    ?# >ot ?sDate(&2echa Ahen 34it 7ub

    tra manera de aplicar la #unci)n anterior$ por ejemplo$ sera para reali-ar una acci)n en#unci)n del da que se seleccione. 0or ejemplo$ supon%amos que nos proponen un da para ir areali-ar un trabajo. Lo introducimos en nuestra BD para podernos plani#icar "... W&a"aX 3lc)di%o sera el si%uiente:

    60ri&ate 7ub cmdDiaDomin%o8lick( Dim &Dia 's Date

    1CVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    16/22

    U3l da seleccionado es domin%o &Dia ;S/T1/1; U'nali-amos el da

    ?# Eeekda"(&Dia &b7unda" Ahen 9s%Bo4 ;3l da propuesto es domin%o. W>o trabajamosen domin%oX;$ &b34clamation$ ;> ^B?L; 3lse

    9s%Bo4 ;' trabajarX;$ &b34clamation$ ;^B?L; 3nd ?#3nd 7ub6

    O(tener &o% e&emento% de )na 1eca7 1)ncione% Da*., Mont., Year.0odemos +e4traer los distintos elementos de una #echa a tra&s de las #unciones:

    Da"( 34trae el n=mero de da 9onth( 34trae el n=mero de mes

    Hear( 34trae el n=mero de a*o

    Lo anterior nos permite una manipulaci)n prcticamente completa sobre la #echa introducida.

    Vamos a &er un c)di%o que nos +des%losa una #echa " nos indica qu es cada elemento.

    60ri&ate 7ub cmdDes%lose2echa8lick( Dim &Dia 's 7trin%$ &9es 's 7trin%$ &'no 's 7trin% Dim &2echa 's Variant &2echa ?nputBo4(;?ntrodu-ca una #echa ,#ormato dd/mm/aa,;$ ;23'; ?# >ot ?sDate(&2echa Ahen 34it 7ub &Dia Da"(&2echa &9es 9onth(&2echa &'no Hear(&2echa 9e.t4t25esultado.Value ;Da: ; G &Dia G ; , 9es: ; G &9es G ; , '*o: ; G &'no3nd 7ub6

    Ver e& nom(re de& me% de )na 1eca7 1)nci2n MontName.0odemos obtener el mes de una #echa a tra&s de la #unci)n 9onth>ame(. 7u estructura es lasi%uiente:

    9onth>ame(n=mero de mes$ abre&iatura

    3l ar%umento \n=mero de mes est claro$ O&erdadM

    0odemos conse%uir el nombre de mes entero o podemos mostrar el nombre de mes abre&iado.3so lo conse%uimos a tra&s del ar%umento \abre&iatura. 7i no indicamos nada es como siese ar%umento tomara el &alor 2'L73$ lo cual nos de&uel&e el nombre enteroP si podemosA5!3 obtendremos el nombre del mes abre&iado.

    0or ejemplo$ un c)di%o podra ser el si%uiente:

    6

    0ri&ate 7ub cmd9es2echa8lick(

    1KVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    17/22

    Dim &2echa 's Variant Dim nom9es 's 7trin% &2echa ?nputBo4(;?ntrodu-ca una #echa ,2ormato dd/mm/aa,;$ ;23';

    ?# >ot ?sDate(&2echa Ahen 34it 7ub nom9es 9onth>ame(9onth(&2echa 9e.t4t25esultado.Value nom9es3nd 7ub

    6

    "a 1)nci2n Date/art.

    0ara complementar las anteriores e4plicaciones echaremos un &ista-o a la #unci)n de esteep%ra#e " a la del si%uiente. 's tendremos$ creo "o$ una &isi)n bastante amplia de todo lo quese intentaba e4plicar en este captulo.

    La #unci)n Date0art( nos permite obtener una serie de in#ormaciones sobre elementosrelacionados con la #echa. 0ara ser ms claros$ por ejemplo$ nos indica el n=mero de trimestre$

    el n=mero de semana del a*o$ adems de permitirnos obtener$ con otro sistema$ datos queacabamos de e4plicar en apartados anteriores.

    La estructura de esta #unci)n es:

    Date0art(elemento a obtener$ #echa$ primer da de la semana$ primera semana del a*o.

    Los dos =ltimos ar%umentos son opcionales$ " os remito a la a"uda de VB para &er su utilidad.

    3l primer ar%umento$ \elemento a obtener$ lo deberemos de#inir a tra&s de un &alor. 3sos&alores son los si%uientes:

    """" 0ara obtener el a*oq 0ara obtener el trimestrem 0ara obtener el mes" 0ara obtener el da del a*od 0ara obtener el daF 0ara obtener el da de la semanaFF 0ara obtener el n=mero de semana del a*oh 0ara obtener la horan 0ara obtener los minutoss 0ara obtener los se%undos.

    7i quisiramos obtener a qu trimestre corresponde T1/T

  • 7/25/2019 CursoVB08

    18/22

    "a 1)nci2n DateDi11.7i queremos calcular un periodo que ha" entre dos #echas tenemos la #unci)n DateDi##(. 7uestructura es:

    DateDi##(elemento a obtener$ #echa?n#erior$ #echa7uperior$primer da de la semana$ primera semana del a*o.

    Los dos =ltimos ar%umentos son opcionales$ " os remito ala a"uda de VB para &er su utilidad.

    3l primer ar%umento$ \elemento a obtener$ corresponde almismo conjunto de elementos que e4plicbamos en el ep%ra#eanterior$ " a l os remito.

    0or ejemplo$ si queremos calcular el n=mero de semanas que ha" entre una #echa introducidapor el usuario " la #echa actual utili-aramos el si%uiente c)di%o:

    6

    0ri&ate 7ub cmdDateDi##8lick( Dim &2echa 's Date Dim &7em 's Lon% &2echa ?nputBo4(;?ntrodu-ca una #echa ,#ormato dd/mm/aa,; 8 G ; in#erior a la #echa actual;$ ;23'; ?# >ot ?sDate(&2echa Ahen 34it 7ub &7em DateDi##(;FF;$ &2echa$ Date 9e.t4t25esultado.Value &7em3nd 7ub6

    S)mar d6a% a )na 1eca'unque pare-ca una ob&iedad$ sumar das a una #echa es tan simple como reali-ar unaoperaci)n matemtica de adici)n$ donde el primer sumando sera la propia #echa " el se%undosumando sera el n=mero de das a a*adir (o al re&s. 3s decir$

    &2echa2in &2echa?ni _ &Dias

    !n simple c)di%o$ para que quede ms claro$ sera:

    60ri&ate 7ub cmd7umaDias8lick( Dim &2echa?ni 's Variant

    Dim &2echa2in 's Variant &2echa?ni ?nputBo4(;?ntrodu-ca una #echa ,2ormato dd/mm/aa,;$ ;23'; ?# >ot ?sDate(&2echa?ni Ahen 34it 7ub &2echa?ni Date(&2echa?ni &2echa2in &2echa?ni _ C 9e.t4t25esultado.Value &2echa2in3nd 7ub6

    1QVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    19/22

    /e9)e:o e4ercicio $r5ctico

    s propon%o un ejercicio: solicitamos al usuario queintrodu-ca una #echa del mes de julio$ " sumamos @T das aesa #echa$ teniendo en cuenta que no debemos incluir el

    mes de a%osto en los clculos (" no es lcito utili-ardirectamente el n=mero de das de a%osto$ sino que ha"que detectar que el mes es a%osto.

    3s decir$ que si se introduce el 1 de julio nos debera de&ol&er el 1Tde septiembre.

    Debis tener en cuenta lo si%uiente (con al%una pista incluida:

    Debemos comprobar que el usuario introdu-ca un &alor que sea una #echa Debemos comprobar que el mes introducido corresponda a julio Debemos +saltarnos todos los das de a%osto. 3sto es un bucle$ " os recuerdo que en

    un captulo anterior &imos estructuras de bucle. Debemos acordarnos de con&ertir los &alores de las di#erentes &ariables para e&itarerrores de c)di%o.

    3n el #ormulario 23jercicios encontraris dos botones con c)di%os con la soluci)n. 'mbosc)di%os son mu" similares$ pero la mecnica del bucle es distinta.

    W7uerteX

    UN EJEMPLO FICTICIO REAL COMO LA VIDA MISMA

    Vamos a desarrollar un ejemplo que est basado en una consulta que recib de un usuario "$

    dado que maneja #echas " cadenas de caracteres$ nos ser&ir para +recordar " +re#rescarconceptos que se han &isto durante esta lecci)n.

    3ste ejemplo lo encontraris desarrollado en el #ormulario 23jemplo2icticio de la BD deejemplo.

    3l supuesto ori%inal se desarrollaba sobre un campo e4istente en una tabla$ a tra&s de un#ormulario. 0ara simpli#icar estableceremos la entrada de datos en un cuadro de te4to$ " lasalida de datos en otro cuadro de te4to. 'l primero le llamar t4t2>oti#icacion$ " al se%undot4t2Vto.

    Enunciado:

    3n 3spa*a (no s en otros pases$ cuando acienda en&a una noti#icaci)n$ te da un pla-om4imo para responder a la noti#icaci)n. Los periodos son los si%uientes:

    >oti#icaci)n recibida entre el 1 " el 1C del mes: &encimiento el da T del mes si%uiente. >oti#icaci)n recibida entre el 1K " el =ltimo da del mes: &encimiento el da C del mes

    posterior al mes si%uiente.

    La idea es que$ al dar de alta una #echa de noti#icaci)n en t4t2>oti#icacion$ automticamentese nos rellene el control t4t2Vto con la #echa de &encimiento correspondiente.

    1SVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    20/22

    Anlisis del supuesto y casos posibles:

    !n anlisis inicial nos muestra lo si%uiente:

    7i el da de la noti#icaci)n es entre el 1 " 1C:3l da de &encimiento es el T3l mes de &encimiento es _1 respecto del mes de

    noti#icaci)n.7i el da de la noti#icaci)n es entre el 1K " el =ltimo da del mes:

    3l da de &encimiento es el C3l mes de &encimiento es _ respecto del mes de

    noti#icaci)n.

    asta aqu todo correcto. 7in embar%o$ hemos anali-ado s)lo dos de los tres elementos de la#echa (da " mes$ pero nos hemos dejado el tercer elemento: el a*o.

    7i%amos nuestro anlisis:7i el periodo m4imo de ms es _ respecto de la #echa de noti#icaci)n$ " el a*o tiene 1

    meses$ podemos entender que 1 Y 1T. 3llo implica que$ al menos hasta octubre$ el a*ode noti#icaci)n ser coincidente con el a*o de &encimiento.

    ORu pasa en no&iembreM 3l propio enunciado nos determina que: 7i la noti#icaci)n es recibida dentro de los primeros quince das del mes el

    comportamiento es el mismo que para el caso %eneral que plantebamos al principio.7i la noti#icaci)n es recibida dentro de los se%undos quince das del mes ha" dos

    elementos que son a#ectados: el mes " el a*o.5especto del mes no podemos aplicar la #)rmula %eneral$ dado que si a 11 le a*adimos _ nosda el mes 1oti#icacion$ "$ para ahondar ms en la cuesti)n$ &amos a a*adir elementos de control paraase%urarnos que el usuario no se +equi&oca en la introducci)n del &alor (e&identemente$ queno se +equi&oca en cuesti)n de #ormatos. 3l c)di%o sera el si%uiente (est completamentecomentado$ por lo que entiendo que no deberais tener problemas en asimilarlo.

    60ri&ate 7ub t4t2>oti#icacion8'#ter!pdate( UDeclaramos las &ariables Dim &2>ot 's 7trin%$ &2Vto 's 7trin% Dim &Dia 's 7trin%$ &9es 's 7trin%$ &'no 's 7trin% Uo%emos el &alor introducido

    TVistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    21/22

    &2>ot >-(9e.t4t2>oti#icacion.Value$ ;; U>A5L , 7i no ha" &alor en el te4tbo4 salimos del proceso

    ?# &2>ot ;; Ahen 34it 7ub U>A5L , Veri#icamos que se ha"a introducido una #echa ?# >ot ?sDate(&2>ot Ahen 34it 7ub Uon&ertimos el strin% &2>ot en Date &2>ot Date(&2>ot

    Ubtenemos el da$ el mes " el a*o de la noti#icacion &Dia Da"(&2>ot &9es 9onth(&2>ot &'no Hear(&2>ot

    Uomo el elemento que nos determina si aplicamos la #)rmula%eneral

    Ues el mes$ anali-amos el mes de la #echa. Lo estudiamos a tra&s del Ubloque 73L3A '73 7elect ase &9es U3l mes &a de enero a octubre. 2ijaos que no tocamos el a*o ase ?s \ 1T U'hora podemos anali-ar el da

    ?# &Dia \ 1C Ahen U'pro&echamos la misma &ariable &Dia para #ijar el da de &encimiento &Dia T ULe a*adimos una unidad al mes (" apro&echamos la misma &ariable &9es &9es _ 1 3lse U3n caso contrario es que se ha recibido en la se%unda quincena &Dia C &9es &9es _ 3nd ?# U3l mes es no&iembre ase ?s 11 U'nali-amos el da U0rimera quincena ?# &Dia \ 1C Ahen Uomo en el caso anterior$ aplicamos la #ormulaci)n %eneral &Dia T &9es &9es _ 1 3lse U7e%unda quincena. Ha no podemos aplicar la #ormulaci)n %eneral. Debemos U#ijar el mes " adicionar una unidad al a*o &Dia C &9es 1 &'no &'no _ 1 3nd ?# U3l mes es diciembre ase ?s 1 U'nali-amos el da U0rimera quincena ?# &Dia \ 1C Ahen &Dia T UDebemos #ijar el mes &9es 1 U'dicionamos un a*o &'no &'no _ 1 3lse U7e%unda quincena. 7e%uimos la operati&a

    1Vistame en http://siliconproject.com.ar/neckkito/

  • 7/25/2019 CursoVB08

    22/22

    &Dia C &9es &'no &'no _ 1 3nd ?# 3nd 7elect

    Ureamos la #echa de &encimiento como un 7trin% &2Vto &Dia G ;/; G &9es G ;/; G &'no

    Uon&ertimos la #echa de &encimiento a Date &2Vto Date(&2Vto U9ostramos su &alor en el te4tbo4 9e.t4t2Vto.Value &2Vto3nd 7ub6

    O2cil$ noM P

    /ARA ACABAR;;;

    reo que$ tras el estudio de este captulo$ "a podremos decir que somos unos +pro#esionalesen el manejo de #echas " de cadenas de caracteres... je$ je...

    omo siempre$ espero que al%una cosa de las aqu e4plicadas os pueda ser =til para &uestrasaplicaciones (n)tese que "a no hablo de BDUs... P

    W7uerteX

    Vistame en http://siliconproject.com.ar/neckkito/