PROGRAMAN APLICACION
Con Base de
Progra Pro gramac mación ión Vi Visu sual al IIII
|
Tclgo. César O. Vanegas Mendoza
Manual de Programación Visual C# con SQL Server 2008
I.
BASES DE D ATOS Y V IS UAL C# Visual C# no es un administrador de Bases de Datos, sólo utiliza un gestor de Bases de Datos, para nuestro caso será, Microsoft SQL Server !!" para permitir la visualización de una manera más est$tica de los datos, tam%i$n para poder mostrar, o realizar algunos cam%ios en alguna %ase de datos& 's necesario tener conocimiento del concepto de algunas sentencias (ue utilizaremos en la segunda parte del curso )rogramación Visual **+ .1.
Espacio de nombres “Sysem.Daa.S!"C"ien$ 's el proveedor de datos de &'- .rame/or0 para SQL Server& 1n proveedor de datos de &'- .rame/or0 para SQL Server descri%e una colección de clases utilizada para tener acceso a una %ase de datos de SQL Server en el espacio administrado&
.%.
S!"Connecion &C"ase'$
2epresenta una cone3ión a%ierta con una %ase de datos de SQL Server& 'sta clase no se puede 4eredar& .(.
S!"DaaAdaper &C"ase'$ 2epresenta un con5unto de comandos de datos 6 una cone3ión de %ase de datos (ue se utilizan para rellenar un DataSet 6 actualizar una %ase de datos de SQL Server& 'sta clase no se puede 4eredar& S(lData7dapter, se utiliza como un puent puentee entre entre DataSe DataSett 6 SQL SQL Serve Serverr para para recup recupera erarr 6 gu guard ardar ar datos datos&& S(lData7dapter proporciona este puente mediante la asignación de .ill, (ue cam%ia los datos en DataSet para (ue coincidan con los datos del origen de datos&
.).
S!"DaaAdaper.*i"" &+,odo'$ 2ellena un un o%5eto DataSet DataSet o un o%5eto o%5eto Data-a%le& Data-a%le& 7grega 7grega 8las a DataSet DataSet o las actualiza para 4acerlas coincidir con las 8las del origen de datos utilizando los nom%res de DataSet 6 Data-a%le&
Tclgo. T clgo. César César Vanegas Vanegas Mendoza Mendoza
Pg!na "
Manual de Programación Visual C# con SQL Server 2008
Sintaxis:
SqlDataAdapter.Fill(DataSet, St r in g )
.-.
DaaSe &C"ase'$
2epresenta una cac4$ de memoria interna de datos& DataSet, (ue es es una cac4$ de memoria interna de datos recuperados recuperados de un origen de datos, datos, representa un componente fundamental de la ar(uitectura de 7D9&'-& DataSet DataSet está compuesto compuesto por una colección colección de o%5etos o%5etos DataData-a%le (ue se pueden relacionar entre ellos mediante mediante o%5etos o%5etos Data2elation& Data2elation& ..
E/emp"o de cone0iones a na Base de Daos$
Cadena de conexión con autenticación de Windows
SqlConnection CN = new SqlConnection (Data Source = ServidorSQL ServidorSQL;; Initial Catalog = BaseDatos; Integrated Security = True); True); CN Nombre de la conexión a la base de datos
ServidorSQL !s el nombre del servidor" si la conexión es local odemos escribir $local%& local'ost" si la conexión no es local& se debe escribir el nombre roio de dic'a conexión
BaseDatos (ndica el nombre de la base de datos a la cual se desea conectar
Integrated Security Permite conectarse a la base de datos con el mecanismo de autenticación de )indo*s
Tclgo. T clgo. César César Vanegas Vanegas Mendoza Mendoza
Pg!na #
Manual de Programación Visual C# con SQL Server 2008
Cadena de conexión con autenticación SQL Server
SqlConnection CN = new SqlConnection (!data source = ServidorSQL; initial catalog = BaseDatos; user id = "suario; #assword = Contrase$a!); CN Nombre de la conexión a la base de datos ServidorSql !s el nombre del servidor" en este caso& la conexión es local" si la conexión no es local& se debe escribir el nombre roio de dic'a conexión BaseDatos Nombre de la +ase de ,atos "ser Id nombre de -suario %assword contrase.a ara ingresar a s/l
Indicar una base de datos que está en un servidor "remoto"
)ara acceder a una %ase de datos (ue está en un servidor remoto, es decir en otro e(uipo, de%emos usar cual(uiera de las dos cadenas de cone3ión (ue 4emos visto antes, aun(ue lo normal será (ue se use la segunda en la (ue se indica el nom%re del usuario 6 la contrase:a& 'sto se suele usar cuando estamos en una página ;e% o %ien si (ueremos acceder desde una aplicación de escritorio <;indo/s&.orms=, pero la %ase de datos no está en nuestro e(uipo& 'l código podr>a ser el siguiente, 6 puedes usar una dirección *) o el nom%re de un dominio
Tclgo. T clgo. César César Vanegas Vanegas Mendoza Mendoza
Pg!na $
Manual de Programación Visual C# con SQL Server 2008
234CTICA I 1.
VISUALI5A3 LOS ESTUDIA6TES 7UE EST46 E6 U6A BASE DE DATOS. Se tiene la información en una 4o5a de '3cel 6 es necesario trasferir esos datos a SQL, para ello seguiremos los siguientes pasos+
'n SQL, creamos la Base de datos Manual 6 una nueva ta%la llamada 'studiantes 6 seleccionamos el tipo de dato adecuado para cada fila 6 clave primaria+
@uardamos el registro de datos de '3cel en formato con e3tensión csv
Tclgo. César Vanegas Mendoza
Pg!na %
Manual de Programación Visual C# con SQL Server 2008
9%tendremos lo siguiente
, es necesario 4acer un clic derec4o so%re el arc4ivo 6 escoger la opción editar=
)ara poder o%tener sólo los datos de los alumnos, de%emos eliminar la primera 8la (ue corresponde a los enca%ezados+
Tclgo. César Vanegas Mendoza
Pg!na &
Manual de Programación Visual C# con SQL Server 2008
'scri%iremos el siguiente código SQL -ransact para poder migrar los datos a la ta%la+
BULK INSERT ESTUDIANTES FROM 'F:\Documentos\Excel\estudintes!cs"' ruta del archivo #it$% FIELDTERMINATOR&'' Indica que al encontrar una coma éste
termina e inicia
otro. RO(TeRMINATOR&'\n' )
74ora, 6a tenemos los datos en una ta%la de una %ase de datos 6 podemos e5ecutar so%re ellos códigos SQL -ransact+ Select * F+om estudintes
Tclgo. César Vanegas Mendoza
Pg!na '
Manual de Programación Visual C# con SQL Server 2008
Tclgo. César Vanegas Mendoza
Pg!na (
Manual de Programación Visual C# con SQL Server 2008
Luego de tener los datos 6a en el gestor SQL, 4aremos el tra%a5o en visual, necesitaremos utilizar la 4erramienta Data@riedie/ 6 escri%iremos el siguiente código+
using System.Data.SqlClient; namespace WinapiManual { public partial class Form1 : Form { public Form1() { nitiali!eComponent(); " pri#ate #oi$ CargarDatos() { SqlConnection C% & ne' SqlConnection(Data Source & S*+,-C; nitial Catalog & Manual; ntegrate$ Security & /rue); C%.,pen (); String ConsultaS0 & Select 2 3rom 4stu$iantes; SqlData*$apter Datos& ne' SqlData*$apter(ConsultaS05 C%); DataSet $s & ne' DataSet(); Datos.Fill($s54stu$iantes); $tgDatos4stu$iantes.DataMember & 4stu$iantes; $tgDatos4stu$iantes.DataSource&$s; C%.Close(); "
pri#ate #oi$ Form16oa$(ob7ect sen$er5 4#ent*rgs e) { CargarDatos(); "
" "
Tclgo. César Vanegas Mendoza
Pg!na )
Manual de Programación Visual C# con SQL Server 2008
%. VISUALI5A3 LOS DATOS DE LOS ALU+6OS DESDE LA 8EB$
Crearemos un formulario /e%+
1tilizaremos la 4erramienta @riedVie/+
Tclgo. César Vanegas Mendoza
Pg!na *+
Manual de Programación Visual C# con SQL Server 2008
'l código en visual será+
using System.Data.SqlClient; using System.Data; namespace 'inapiWen { public partial class WebForm4stu$iantes : System.Web..age { pri#ate #oi$ CargarDatos() { SqlConnection C% & ne' SqlConnection(Data Source & S*+,-C; nitial Catalog & Manual; ntegrate$ Security & /rue); C%.,pen(); String ConsultaS0 & Select 2 3rom 4stu$iantes; SqlData*$apter Datos& ne' SqlData*$apter (ConsultaS05 C%); DataSet $s & ne' DataSet(); Datos.Fill($s54stu$iantes); Dtg4stu$iantes.DataMember & 4stu$iantes; Dtg4stu$iantes.DataSource&$s; Dtg4stu$iantes.Data8in$(); C%.Close(); " protecte$ #oi$ age6oa$(ob7ect sen$er5 4#ent*rgs e) { CargarDatos(); "
" "
Tclgo. César Vanegas Mendoza
Pg!na **
Manual de Programación Visual C# con SQL Server 2008
(. C3EA3 U6 23O93A+A 7UE 2E3+ITA VISUALI5A3 LOS DATOS DE U6 ESTUDIA6TE CUYO C:DI9O SEA I693ESADO DESDE EL TECLADO$
Crearemos un procedimiento almacenado en SQL, para poder usar el programa las veces (ue deseemos 6 para facilitar el desarrollo de este e5ercicio+
,REATE -RO, .d/o0!.BUS,AR1ESTUDIANTE0 2ID "+c$+%34) AS SELE,T * FROM ESTUDIANTES #$e+e IdEstudinte li5e '6'7 2ID 7'6'
Interface +
Código en Visual+
using System.Data.SqlClient; namespace WinapiManual { public partial class Form9 : Form { public Form9() { nitiali!eComponent(); " SqlConnection Coneion&ne' SqlConnection(Data Source & S*+,-C; nitial Catalog & Manual; ntegrate$ Security & /rue); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla;
Tclgo. César Vanegas Mendoza
Pg!na *"
Manual de Programación Visual C# con SQL Server 2008
pri#ate #oi$ CargarDatos() { try{ Coneion.,pen(); Coman$o & ne' SqlComman$(8uscar64stu$iante5 Coneion); Coman$o.arameters.*$$($5 SqlDb/ype./et51<).=alue & tt8uscar./et; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter (Coman$o); /abla&ne' Data/able(); *$apta$or.Fill(/abla); $tgestu$iantes.DataSource & /abla; Coneion.Close(); " catc> (Sql4ception e) { Message8o.S>o'(4rror:?e5 S0 4peccion5Message8o8uttons.,@); " "
pri#ate #oi$ Form96oa$(ob7ect sen$er5 4#ent*rgs e) { CargarDatos(); "
pri#ate #oi$ tt8uscar6/etC>ange$(ob7ect sen$er5 4#ent*rgs e) { CargarDatos(); "
pri#ate #oi$ btnMostrar6ClicA(ob7ect sen$er5 4#ent*rgs e) { tt8uscar.Clear(); "
" "
234CTICA II ; T3ABA con opciones !e nos permian ?isa"i@ar disinas y nmerosas cons"as a "a base de daos 2rodcos as como ambi,n acer a"nas modicaciones a "os daos de "a misma. DiseFe "a siiene esrcra de ab"as y area nos canos reisros a cada ab"a$
Tclgo. César Vanegas Mendoza
Pg!na *#
Manual de Programación Visual C# con SQL Server 2008
1.
3EALI5A3 U6A CO6EGI:6 7UE SI3VA 2A3A TODOS LOS *O3+ULA3IOS 7UE SE I+2LE+E6TA346
's necesario agregar una clase para ello, so%re el pro6ecto clic derec4o 6 luego elegir la opción agregar finalmente clic en la opción clase+
Se nos mostrará la siguiente ventana 6 tendremos (ue escri%ir un nom%re para la cone3ión, la denominaremos ACone3ionBaseDatos+
Tclgo. César Vanegas Mendoza
Pg!na *$
Manual de Programación Visual C# con SQL Server 2008
.inalmente, el código de la cone3ión es+
using System.Data.SqlClient; namespace WinapiManual { public class Coneion8aseDatos { public SqlConnection Coneion & ne' SqlConnection(Data Source & S*+,-C; nitial Catalog & Manual; ntegrate$ Security & /rue); " "
%. C3EA3 U6 +E6H 7UE 6OS +UEST3E LAS SI9UIE6TES O2CIO6ES$
Tclgo. César Vanegas Mendoza
+anenimieno 3epores Cons"as Acerca de
Pg!na *%
Manual de Programación Visual C# con SQL Server 2008
(. VISUALI5A3 EL 6H+E3O DE 23ODUCTOS 2O3 CATE9O3A$
Código SQL+ ,REATE -RO, .d/o0!.Nume+oDe-+oductos-o+,te8o+i0 AS SELE,T Nom/+e,te8o+i,OUNT%*) AS TOTAL FROM ,te8o+i AS , INNER 9OIN -+oductos AS ON ,!Idecte8o+i &-!Idecte8o+i ROU- B; Nom/+e,te8o+i ORDER B; Nom/+ecte8o+i
*nterface en Visual+
Tclgo. César Vanegas Mendoza
Pg!na *&
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual.+esources { public partial class Frm%umero$ero$uctosporCategoria : Form { public Frm%umero$ero$uctosporCategoria() { nitiali!eComponent(); " SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla; Coneion8aseDatos c & ne' Coneion8aseDatos(); pri#ate #oi$ CargarDatos() { try { c.Coneion.,pen(); Coman$o & ne' SqlComman$(%umeroDero$uctosorCategoria5 c.Coneion); Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); $tgDatos.DataSource & /abla; c.Coneion.Close(); " catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); " " pri#ate #oi$ Frm%umero$ero$uctosporCategoria6oa$(ob7ect sen$er5 4#ent*rgs e) { CargarDatos(); "
" "
Código visual para poder llamar al formulario (ue contiene dic4os datos+
Tclgo. César Vanegas Mendoza
Pg!na *'
Manual de Programación Visual C# con SQL Server 2008
pri#ate #oi$ pro$uctosorCategoria/oolStripMenutem6ClicA(ob7ect sen$er5 4#ent*rgs e) { Frm%umero$ero$uctosporCategoria 3r & ne' Frm%umero$ero$uctosporCategoria(); 3r.M$iarent&t>is; 3r.S>o'(); "
). 3EALI5A3 U6A CO6SULTA 7UE 2E3+ITA VE3 C:DI9O DEL 23ODUCTOJ 6O+B3E DEL 23ODUCTOJ 23ECIO DEL 23ODUCTOJ STOCKJ 6O+B3E DEL 23OVEEDO3 Y CATE9O3A DEL 23ODUCTOJ LAS CATE9O3AS SE +OST3A346 E6 U6A LISTA DES2LE9ABLE$
Código SQL+
,REATE -RO, .d/o0!.TODASLAS,ATEORIAS0 AS SELE,T * FROM
d/o!,te8o+i
,REATE -RO, .d/o0!.BUS,AR-RODU,TOS-OR,ATEORIA0 2,ATE N4) AS SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Ide,te8o+i d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+eciod/o!-+oductos!Stoc5d/o!-+oductos!Ide-+o"e edo+ d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE ,te8o+i!Nom/+ecte8o+i &2,ATE
*nterface en Visual+
Tclgo. César Vanegas Mendoza
Pg!na *(
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient;
namespace WinapiManual { public partial class Frm8uscarro$uctosorCategoria : Form { public Frm8uscarro$uctosorCategoria() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla; pri#ate #oi$ enarista() { Coman$o & ne' SqlComman$(/,D*S*SC*/4B,+*S5 c.Coneion); Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); lstCategoria.DataSource & /abla; lstCategoria.DisplayMember & %ombreCategoria; "
pri#ate #oi$ enarDatagri$() { try { Coman$o & ne' SqlComman$(8SC*++,DC/,S,+C*/4B,+*5 c.Coneion); Coman$o.arameters.*$$(C*/45 SqlDb/ype.%=arC>ar5(<)).=alue &
Tclgo. César Vanegas Mendoza
Pg!na *)
Manual de Programación Visual C# con SQL Server 2008
lstCategoria./et; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); DtgDatos.DataSource & /abla;
" catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); " "
pri#ate #oi$ Frm8uscarro$uctosorCategoria6oa$(ob7ect sen$er5 4#ent*rgs e) { enarista(); "
pri#ate #oi$ lstCategoria6Selecte$n$eC>ange$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); "
" "
-. +OST3A3 LOS SI9UIE6TES DATOS DE LOS 23ODUCTOS$ 6O+B3EJ 23ECIOJ CATE9O3A Y 23OVEEDO3 S:LO DE LOS 23ODUCTOS 7UE EST6 DE6T3O DE U6 3A69O DE 23ECIOS$
Código SQL+
,REATE -RO, Busc+-+oductos-o+-+ecio 2meno+ deciml%3@) 2mo+ deciml%3@) s SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!,te8o+i!Nom/+ecte8o+i d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!-+oductos INNER 9OIN d/o!,te8o+i ON d/o!-+oductos!Ide,te8o+i & d/o!,te8o+i!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!-+ecio BET(EEN 2meno+ nd 2mo+
*nterface en Visual+
Tclgo. César Vanegas Mendoza
Pg!na "+
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual { public partial class Frmro$uctosorrecio : Form { public Frmro$uctosorrecio() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla; pri#ate #oi$ enarDatagri$() { try { Coman$o & ne' SqlComman$(8uscarro$uctosorrecio5 c.Coneion); Coman$o.arameters.*$$(menor5 SqlDb/ype.Decimal).=alue & %u$Menor.=alue; Coman$o.arameters.*$$(mayor5 SqlDb/ype.Decimal).=alue &%u$Mayor.=alue; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter (Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); $tgDatos.DataSource & /abla; "
Tclgo. César Vanegas Mendoza
Pg!na "*
Manual de Programación Visual C# con SQL Server 2008
catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); " " pri#ate #oi$ btn8uscar6ClicA(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); "
pri#ate #oi$ Frmro$uctosorrecio6oa$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); "
" "
& +OST3A3
6O+B3EJ 23ECIOJ CATE9O3A Y 23OVEEDO3 DE LOS 23ODUCTOS 7UE E+2IECE6 CO6 U6A DETE3+I6ADA LET3A$
Código SQL+
,REATE -RO, .d/o0!.Busc+-+oductosEm?iecenUnLet+0 2Desc+i?cion n"+c$+%>4) s SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!,te8o+i!Nom/+ecte8o+i d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!-+oductos INNER 9OIN d/o!,te8o+i ON d/o!-+oductos!Ide,te8o+i & d/o!,te8o+i!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Desc+ici?cion li5e 2Desc+i?cion7'6'
*nterface en Visual+
Tclgo. César Vanegas Mendoza
Pg!na ""
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual { public partial class Frm8uscarpro$uctos4mpiecenConetra : Form { public Frm8uscarpro$uctos4mpiecenConetra() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla; pri#ate #oi$ enarDatagri$() { try { Coman$o & ne' SqlComman$(8uscarro$uctos4mpiecennaetra5 c.Coneion); Coman$o.arameters.*$$(Descripcion5 SqlDb/ype.%=arC>ar5<).=alue & tt8uscar./et; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); $tgDatos.DataSource & /abla; " catc> (Sql4ception e) {
Tclgo. César Vanegas Mendoza
Pg!na "#
Manual de Programación Visual C# con SQL Server 2008
Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); " " pri#ate #oi$ btn/o$os6ClicA(ob7ect sen$er5 4#ent*rgs e) { tt8uscar.Clear(); " pri#ate #oi$ Frm8uscarpro$uctos4mpiecenConetra6oa$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); " pri#ate #oi$ tt8uscar6/etC>ange$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); "
" "
M. VISUALI5A3 LOS 23ODUCTOS 7UE 2E3TE6ECE6 A U6 DETE3+I6ADO 23OVEEDO3$
Código SQL+
,REATE -RO, .d/o0!.BUS,AR-RODU,TOS-OR-RO4) AS SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Ide,te8o+i d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o!-+oductos!Ide-+o"eedo+ d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+o"eedo+es!Nom-+o"eedo+ &2-RO
,REATE -RO, .d/o0!.TODOSLOS-RO
*nterface en Visual+
Tclgo. César Vanegas Mendoza
Pg!na "$
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual { public partial class Frm8uscarro$uctosorro#ee$or : Form { public Frm8uscarro$uctosorro#ee$or() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla;
pri#ate #oi$ enarista() { Coman$o & ne' SqlComman$(/,D,S,S+,=44D,+4S5 c.Coneion); Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); lstro#ee$ores.DataSource & /abla; lstro#ee$ores.DisplayMember & %omro#ee$or ; "
pri#ate #oi$ enarDatagri$() { try { Coman$o & ne' SqlComman$(8SC*++,DC/,S,++,=44D,+5 c.Coneion);
Tclgo. César Vanegas Mendoza
Pg!na "%
Manual de Programación Visual C# con SQL Server 2008
Coman$o.arameters.*$$(+,=45 SqlDb/ype.%=arC>ar5 (<)).=alue &lstro#ee$ores./et; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); DtgDatos.DataSource & /abla; " catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); " " pri#ate #oi$ lstro#ee$ores6Selecte$n$eC>ange$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); " pri#ate #oi$ Frm8uscarro$uctosorro#ee$or6oa$(ob7ect sen$er5 4#ent*rgs e) { enarista(); "
" "
N. 23ODUCTOS CO6 STOCK Y 23ODUCTOS SI6 STOCK$
Código SQL+
,+ete -+ocedu+e -+oductos,onStoc5 s select Ide-+oductoDesc+ici?cion-+ecioStoc5 C+om -+oductos #$e+e Stoc54
,+ete -+ocedu+e -+oductosSinStoc5 s select Ide-+oductoDesc+ici?cion-+ecioStoc5 C+om -+oductos #$e+e Stoc5&4
*nterface en Visual+
Tclgo. César Vanegas Mendoza
Pg!na "&
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+ using WinapiManual.+esources; namespace WinapiManual { public partial class Form : Form { public Form() { nitiali!eComponent(); " pri#ate #oi$ pro$uctosorCategoria/oolStripMenutem6ClicA(ob7ect sen$er5 4#ent*rgs e) { Frm%umero$ero$uctosporCategoria 3r & ne' Frm%umero$ero$uctosporCategoria(); 3r.M$iarent&t>is; 3r.S>o'(); " pri#ate #oi$ buscarorCategoria/oolStripMenutem6ClicA(ob7ect sen$er5 4#ent*rgs e) { Frm8uscarro$uctosorCategoria 3r & ne' Frm8uscarro$uctosorCategoria(); 3r.M$iarent & t>is; 3r.S>o'(); " pri#ate #oi$ pro$uctosorrecio/oolStripMenutem6ClicA(ob7ect sen$er5 4#ent*rgs e) { Frmro$uctosorrecio 3r & ne' Frmro$uctosorrecio(); 3r.S>o'Dialog(); " pri#ate #oi$ pro$uctosor%ombre/oolStripMenutem6ClicA(ob7ect sen$er5 4#ent*rgs e) {
Tclgo. César Vanegas Mendoza
Pg!na "'
Manual de Programación Visual C# con SQL Server 2008
Frm8uscarpro$uctos4mpiecenConetra 3r & ne' Frm8uscarpro$uctos4mpiecenConetra(); 3r.S>o'Dialog(); " pri#ate #oi$ porro#ee$or/oolStripMenutem6ClicA(ob7ect sen$er5 4#ent*rgs e) { Frm8uscarro$uctosorro#ee$or 3r & ne' Frm8uscarro$uctosorro#ee$or(); 3r.S>o'Dialog(); " pri#ate #oi$ pro$uctosorStocA/oolStripMenutem6ClicA(ob7ect sen$er5 4#ent*rgs e) { Frmro$uctosporStocA 3r & ne' Frmro$uctosporStocA(); 3r.S>o'Dialog(); " " "
. +OST3A3 LOS 23ODUCTOS VI9E6TES Y LOS DESCO6TI6UADOS$ Modi8(ue la ta%la productos 6 agregue el siguiente Campo
'n este tipo de campo se tiene (ue almacenar un <-rue<= o .alse
Código SQL+
c+ete -RO, .d/o0!.BUS,AR-RODU,TOSDES,ONTINUADOS0 2<lo+ s /it AS SELE,T Ide-+oducto Desc+ici?cion -+ecioStoc5Descontinudos FROM -+oductos (=ERE Descontinudos &2<lo+
*nterface en Visual+
Tclgo. César Vanegas Mendoza
Pg!na "(
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+ using System.Data.SqlClient; namespace WinapiManual { public partial class Frm8uscarpro$uctosDescontinua$os : Form { public Frm8uscarpro$uctosDescontinua$os() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla; int #alor; pri#ate #oi$ enarDatagri$() { try { i3 (c>ADescontinua$os.C>ecAe$) #alor & 1; else #alor & <; Coman$o & ne' SqlComman$(8SC*++,DC/,SD4SC,%/%*D,S5 c.Coneion); #alor;
Coman$o.arameters.*$$(=alor5 SqlDb/ype.8it).=alue & Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); $tgDatos.DataSource & /abla;
Tclgo. César Vanegas Mendoza
Pg!na ")
Manual de Programación Visual C# con SQL Server 2008
" catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); " " pri#ate #oi$ Frm8uscarpro$uctosDescontinua$os6oa$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); " pri#ate #oi$ c>ADescontinua$os6C>ecAe$C>ange$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); " " "
234CTICA III C3EACI:6 DE LA CLASE CO6EGI:6$ using System.Data.SqlClient; namespace WinapiManual { public class Coneion8aseDatos { public SqlConnection Coneion & ne' SqlConnection(Data Source & S*+,-C; nitial Catalog & Manual; ntegrate$ Security & /rue); " "
1. E6 U6 LISTBOG O CO+BOBOGJ COLOCA3 EL SI9UIE6TE TEGTO &SO6 LOS TI2OS DE BUS7UEDA'$
'l proceso es seleccionar un tipo de %Es(ueda en la Lista, luego escri%ir un te3to en el -e3tBo3 6 al darle F'-'2G al -e3tBo3, se de%e filtrar el DatagridVie/ por el Tclgo. César Vanegas Mendoza
Pg!na #+
Manual de Programación Visual C# con SQL Server 2008
nom%re del producto, respetando el tipo de %Es(ueda seleccionado& Los datos (ue de%en salir en el DatagridVie/ son+ *de)roducto, Descripcion, )recio, Stoc0, Categoria, )roveedor&
Código SQL+
,REATE -RO, .d/o0!.BUS,AR-RODU,TOSSEUNO-,IONES0 2NOMBRE N4) 2TI-O INT AS iC%2TI-O&4) SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Ide,te8o+i d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o!-+oductos!Ide-+o"eedo+ d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Desc+ici?cion Li5e 2NOMBRE7'6' else iC%2TI-O&3) SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Ide,te8o+i d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o!-+oductos!Ide-+o"eedo+ d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Desc+ici?cion Li5e '6'72NOMBRE else iC%2TI-O&) SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Ide,te8o+i d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o!-+oductos!Ide-+o"eedo+ d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Desc+ici?cion Li5e '6'72NOMBRE7'' else iC%2TI-O&) SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Ide,te8o+i d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o!-+oductos!Ide-+o"eedo+ d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Desc+ici?cion Not Li5e '6'72NOMBRE7''
Tclgo. César Vanegas Mendoza
Pg!na #*
Manual de Programación Visual C# con SQL Server 2008
else SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Ide,te8o+i d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o!-+oductos!Ide-+o"eedo+ d/o!-+o"eedo+es!Nom-+o"eedo+ FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Desc+ici?cion &2NOMBRE
*nterface en Visual+
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual { public partial class Frm8uscarro$uctosSegun,pcion : Form { public Frm8uscarro$uctosSegun,pcion() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla; int #alor;
pri#ate #oi$ enarDatagri$() { try { Coman$o & ne' SqlComman$(8SC*++,DC/,SS4B%,C,%4S5 c.Coneion); Coman$o.arameters.*$$(%,M8+45 SqlDb/ype.%=arC>ar5<).=alue & tt8uscar./et;
Tclgo. César Vanegas Mendoza
Pg!na #"
Manual de Programación Visual C# con SQL Server 2008
Coman$o.arameters.*$$(/,5 SqlDb/ype.nt).=alue & lst,pciones8uscar.Selecte$n$e; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); DtgDatos.DataSource & /abla;
" catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); " " pri#ate #oi$ Frm8uscarro$uctosSegun,pcion6oa$(ob7ect sen$er5 4#ent*rgs e) { lst,pciones8uscar.Selecte$n$e & <; enarDatagri$(); " pri#ate #oi$ tt8uscar6/etC>ange$(ob7ect sen$er5 4#ent*rgs e) { enarDatagri$(); " pri#ate #oi$ btn/o$os6ClicA(ob7ect sen$er5 4#ent*rgs e) { lst,pciones8uscar.Selecte$n$e & <; tt8uscar.Clear(); enarDatagri$(); "
" "
%. E6 U6 93U2O DE 3ADIOBUTTO6J COLOCA3 LOS *ILT3OS CO+O SE +UEST3A E6 LA 2A6TALLA. 'l procedimiento es seleccionar un filtro, luego darle un clic0 en el %otón, para (ue aparezcan los datos de los )roductos en el Data@ridVie/& Los campos a mostrar en el Data@ridVie/ son+ )roductame, 1nit)rice, 1nitsinStoc0, Categor6*D, Discontinued&
Código SQL+ ,REATER -RO, .d/o0!.BUS,AR-RODU,TOS,ONSTO,K0 AS SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o! -+o"eedo+es!Nom-+o"eedo+d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!descontinudos FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Stoc54
Tclgo. César Vanegas Mendoza
Pg!na ##
Manual de Programación Visual C# con SQL Server 2008
,REATE -RO, .d/o0!.BUS,AR-RODU,TOSGUEESTENDES,ONTINUADOS0 AS SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o! -+o"eedo+es!Nom-+o"eedo+d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!descontinudos FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE -+oductos!Descontinudos&'4'
,REATE -RO, .d/o0!.BUS,AR-RODU,TOSGUEESTENSEUN,ATEORIA0 2NOMBRE N4) AS SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o! -+o"eedo+es!Nom-+o"eedo+d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!descontinudos FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+ (=ERE ,te8o+i!Nom/+ecte8o+i LIKE '6' 72NOMBRE7'6'
,REATE -RO, .d/o0!.MOSTRARTODOSLOS-RODU,TOS0 AS SELE,T d/o!-+oductos!Ide-+oducto d/o!-+oductos!Desc+ici?cion d/o!-+oductos!-+ecio d/o!-+oductos!Stoc5d/o! -+o"eedo+es!Nom-+o"eedo+d/o!,te8o+i!Nom/+ecte8o+i d/o!-+oductos!descontinudos FROM d/o!,te8o+i INNER 9OIN d/o!-+oductos ON d/o!,te8o+i!Ide,te8o+i & d/o!-+oductos!Ide,te8o+i INNER 9OIN d/o!-+o"eedo+es ON d/o!-+oductos!Ide-+o"eedo+ & d/o!-+o"eedo+es!Ide-+o"eedo+
a' D*S'H9+
Tclgo. César Vanegas Mendoza
Pg!na #$
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual { public partial class F+M8SC*++,DC/,SS4B%,C,%4SD4+*D, : Form { public F+M8SC*++,DC/,SS4B%,C,%4SD4+*D,() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla;
pri#ate #oi$ btnSalir6ClicA(ob7ect sen$er5 4#ent*rgs e) { Close(); " pri#ate #oi$ rbtnCosStocA6C>ecAe$C>ange$(ob7ect sen$er5 4#ent*rgs e) { Coman$o & ne' SqlComman$(8SC*++,DC/,SC,%S/,C@5 c.Coneion); Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter (Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); DtgDatos.DataSource & /abla; tt8uscar.+ea$,nly & true; tt8uscar.Clear(); " pri#ate #oi$ rbtn=igentes6C>ecAe$C>ange$(ob7ect sen$er5 4#ent*rgs e) { Coman$o & ne' SqlComman$(8SC*++,DC/,S044S/4%D4SC,%/%*D,S5 c.Coneion); Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter (Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); DtgDatos.DataSource & /abla; tt8uscar.+ea$,nly & true; tt8uscar.Clear(); " pri#ate #oi$ rbtncategoria6C>ecAe$C>ange$(ob7ect sen$er5 4#ent*rgs e) { tt8uscar.+ea$,nly & 3alse; tt8uscar.Clear(); " pri#ate #oi$ tt8uscar6/etC>ange$(ob7ect sen$er5 4#ent*rgs e) { Coman$o & ne' SqlComman$(8SC*++,DC/,S044S/4%S4B%C*/4B,+*5 c.Coneion); Coman$o.arameters.*$$(%,M8+45 SqlDb/ype.%=arC>ar5 <).=alue & tt8uscar./et; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter (Coman$o);
Tclgo. César Vanegas Mendoza
Pg!na #%
Manual de Programación Visual C# con SQL Server 2008
/abla & ne' Data/able(); *$apta$or.Fill(/abla); DtgDatos.DataSource & /abla;
"
pri#ate #oi$ rbtn/o$os6C>ecAe$C>ange$(ob7ect sen$er5 4#ent*rgs e) { Coman$o & ne' SqlComman$(M,S/+*+/,D,S,S+,DC/,S5 c.Coneion); Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter (Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); DtgDatos.DataSource & /abla; tt8uscar.+ea$,nly & true; tt8uscar.Clear(); "
" "
(. COLOCA3 U6 OB
'l @ridVie/ de%e mostrar+ los datos de los clientes 6 se 8ltraran automaticamente al seleccionar una fec4a, se de%e configurar el Mont4Calendar, para (ue la fec4a inicie el !I!IJJ 6 finalice el KII!
Código SQL+
,REATE -RO, .d/o0!.BUS,AR1,LIENTE1FE,=ANA,I0 2FE,=A DATE AS SELE,T * FROM ,LIENTES #$e+e FE,=ANA,I&2FE,=A
Dise:o *nterface+
Tclgo. César Vanegas Mendoza
Pg!na #&
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual { public partial class Frm8uscarClientesporFec>a%acimiento : Form { public Frm8uscarClientesporFec>a%acimiento() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla;
pri#ate #oi$ enarDatagri$() { try { Coman$o & ne' SqlComman$(8SC*+6C4%/46F4CE*%*C5 c.Coneion); Coman$o.arameters.*$$(Fec>a5 SqlDb/ype.Date).=alue & Calen$arioFec>a%aci.SelectionStart; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); $tgDatos.DataSource & /abla; " catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); "
Tclgo. César Vanegas Mendoza
Pg!na #'
Manual de Programación Visual C# con SQL Server 2008
" pri#ate #oi$ btnSalir6ClicA(ob7ect sen$er5 4#ent*rgs e) { Close(); "
pri#ate #oi$ Calen$arioFec>a%aci6DateC>ange$(ob7ect sen$er5 Date+ange4#ent*rgs e) { enarDatagri$(); "
" "
1.
COLOCA3 U6 OB
'l @ridVie/ de%e mostrar+ los datos de los clientes 6 se 8ltraran automaticamente al seleccionar una fec4a, se de%e configurar el Mont4Calendar, para (ue la fec4a inicie el !I!IJJ 6 finalice el KII!
Código SQL+
,REATE -RO, .d/o0!.BUS,AR1,LIENTE1FE,=ANA,I0 2FE,=A DATE AS SELE,T * FROM ,LIENTES #$e+e FE,=ANA,I&2FE,=A
Dise:o *nterface+
Tclgo. César Vanegas Mendoza
Pg!na #(
Manual de Programación Visual C# con SQL Server 2008
Código visual, para poder mostrar los datos+
using System.Data.SqlClient; namespace WinapiManual { public partial class Frm8uscarClientesporFec>a%acimiento : Form { public Frm8uscarClientesporFec>a%acimiento() { nitiali!eComponent(); " Coneion8aseDatos c & ne' Coneion8aseDatos(); SqlComman$ Coman$o; SqlData*$apter *$apta$or; Data/able /abla;
pri#ate #oi$ enarDatagri$() { try { Coman$o & ne' SqlComman$(8SC*+6C4%/46F4CE*%*C5 c.Coneion); Coman$o.arameters.*$$(Fec>a5 SqlDb/ype.Date).=alue & Calen$arioFec>a%aci.SelectionStart; Coman$o.Comman$/ype & Comman$/ype.Store$roce$ure; *$apta$or & ne' SqlData*$apter(Coman$o); /abla & ne' Data/able(); *$apta$or.Fill(/abla); $tgDatos.DataSource & /abla; " catc> (Sql4ception e) { Message8o.S>o'(4rror: ? e5 S0 4peccion5 Message8o8uttons.,@); "
Tclgo. César Vanegas Mendoza
Pg!na #)
Manual de Programación Visual C# con SQL Server 2008
" pri#ate #oi$ btnSalir6ClicA(ob7ect sen$er5 4#ent*rgs e) { Close(); "
pri#ate #oi$ Calen$arioFec>a%aci6DateC>ange$(ob7ect sen$er5 Date+ange4#ent*rgs e) { enarDatagri$(); "
" "
Tclgo. César Vanegas Mendoza
Pg!na $+
Manual de Programación Visual C# con SQL Server 2008
Tclgo. César Vanegas Mendoza
Pg!na $*
Tclgo. César Vanegas Mendoza
Pg!na $"