En este punto veremos como insertar registros a una tabla de SQL.
La sintaxis es la siguiente:
INSERT INTO [tabla] VALUES([valor1], [valor2], ..., [valorN])
Un ejemplo sería el siguiente:
INSERT INTO tblUsuario VALUES ('juan', 'juan lopez')
INSERT INTO tblAutos VALUES ('nissan', 'blanco')
En caso de que no conozcamos el orden de los campos tal como aparecen en nuestra tabla de SQL podemos poner el nombre del campo justo despues del nombre de la tabla
INSERT INTO [tabla] ([campo1], ..., [campoN])
VALUES ([valor1], ..., [valorN])
Por ejemplo:
INSERT INTO tblUsuario(NombreCorto, Nombre)
VALUES ('juan', 'juan lopez')
INSERT INTO tblAutos(Marca, Color)
VALUES ('nissan', 'blanco')
jueves, 11 de noviembre de 2010
domingo, 5 de septiembre de 2010
Campos con valores por omisión
Existe la posibilidad de que un campo pueda tener un valor por omisión, para ello haremos uso de la palabra reservada DEFAULT.
La sintaxis es la siguiente:
[Campo] [Tipo de Dato] CONSTRAINT [Nombre constraint] DEFAULT [Valor]
Donde:
La sintaxis es la siguiente:
[Campo] [Tipo de Dato] CONSTRAINT [Nombre constraint] DEFAULT [Valor]
Donde:
- [Campo]: Es el nombre del campo
- [Tipo de dato]: Es el tipo de dato del campo
- CONSTRAINT [Nombre constraint]: Es el nombre que se le asignará al constraint. Es opcional, si se omite el SQL asignará el nombre de la constraint
- DEFAULT [Valor]: Es el valor por default del campo
CREATE TABLE tblAutos
(
Marca Varchar(10),
Año Int ,
Precio Money CONSTRAINT [Def_Precio] DEFAULT (0),
Usuario Int
)
(
Marca Varchar(10),
Año Int ,
Precio Money CONSTRAINT [Def_Precio] DEFAULT (0),
Usuario Int
)
domingo, 29 de agosto de 2010
Llaves foráneas
La sintaxis para crear llaves foráneas es la siguiente:
FOREING KEY [Campo] REFERENCES [Tabla2] ([Campo_Tabla2])
Al igual que en las llaves primaria, aquí tambien tenemos la opción de poner el nombre de la CONSTRAINT y evitar que sea el SQL quien asigne el nombre:
CONSTRAINT [Nombre_Constraint] FOREING KEY [Campo] REFERENCES [Tabla2] ([Campo_Tabla2])
Supongamos que tenemos una tabla de usuarios y una tabla de autos, a la que a cada auto le asignaremos un usuario, entonces para crear esta llave foránea haríamos lo siguiente:
CREATE TABLE tblAutos
(
Marca Varchar(10) NOT NULL,
Año Int NOT NULL,
Precio Money,
Usuario Int NOT NULL,
CONSTRAINT FK_tblAutos_tblUsuarios FOREING KEY Usuario REFERENCES tblUsuarios(ID)
)
FOREING KEY [Campo] REFERENCES [Tabla2] ([Campo_Tabla2])
Al igual que en las llaves primaria, aquí tambien tenemos la opción de poner el nombre de la CONSTRAINT y evitar que sea el SQL quien asigne el nombre:
CONSTRAINT [Nombre_Constraint] FOREING KEY [Campo] REFERENCES [Tabla2] ([Campo_Tabla2])
Supongamos que tenemos una tabla de usuarios y una tabla de autos, a la que a cada auto le asignaremos un usuario, entonces para crear esta llave foránea haríamos lo siguiente:
CREATE TABLE tblAutos
(
Marca Varchar(10) NOT NULL,
Año Int NOT NULL,
Precio Money,
Usuario Int NOT NULL,
CONSTRAINT FK_tblAutos_tblUsuarios FOREING KEY Usuario REFERENCES tblUsuarios(ID)
)
domingo, 8 de agosto de 2010
Llaves primarias en SQL
La sintaxis para crear una llave primaria en una tabla de SQL es la siguiente:
CREATE TABLE [NombreTabla]
(
[Campo1] [TipoDato],
...
PRIMARY KEY ([Campo1], ..., [CampoN])
)
La llave primaria puede estar compuesta por múltiples campos o bien puede ser únicamente un campo, también hay que tomar en cuenta que para que un campo pueda ser llave primaria este no debe permitir valores Nulos.
Al crear una llave primaria el SQL Server le asigna automáticamente un nombre a la Constraint, en caso de que nosotros no deseemos que suceda eso, le podemos asignar el nombre a esa Constraint de la siguiente manera
CONSTRAINT [NombreConstraint]
PRIMARY KEY ([Campo1], ..., [CampoN])
Ahora bien, si ya tenemos creada la tabla y queremos ponerle llaves primaria tendríamos que hacer uso de la sentencia ALTER TABLE
ALTER TABLE [NombreTabla]
ADD CONSTRAINT [NombreConstraint]
PRIMARY KEY ([Campo1], ..., [CampoN])
Aqui algunos ejemplos:
CREATE TABLE tblUsuarios
(
ID Int NOT NULL,
Clave Varchar(10),
Nombre Varchar(100),
FechaRegistro Datetime,
PRIMARY KEY (ID)
)
CREATE TABLE tblAutos
(
Marca Varchar(10) NOT NULL,
Año Int NOT NULL,
Precio Money,
CONSTRAINT PK_Autos PRIMARY KEY (Marca, Año)
)
domingo, 1 de agosto de 2010
Creación de tablas en SQL
A continuación veremos la sintaxis mínima requerida para crear una tabla en el SQL
CREATE TABLE [NombreTabla]
(
[Campo1] [TipoDato],
[Campo2] [TipoDato],
...
[CampoN] [TipoDato]
)
Donde:
[NombreTabla] Es el nombre de la tabla.
[Campo1] Es el nombre del campo.
[TipoDato] Es el tipo de dato.
Algunos de los tipos de datos que podemos utilizar son los siguientes:
CREATE TABLE [NombreTabla]
(
[Campo1] [TipoDato],
[Campo2] [TipoDato],
...
[CampoN] [TipoDato]
)
Donde:
[NombreTabla] Es el nombre de la tabla.
[Campo1] Es el nombre del campo.
[TipoDato] Es el tipo de dato.
Algunos de los tipos de datos que podemos utilizar son los siguientes:
- Varchar(n): Donde n es el número de caracteres que podrá tener el campo.
- Int
- Datatime
- Money
Y a continuación, les dejo unos ejemplos:
CREATE TABLE tblUsuarios
(
ID Int,
Clave Varchar(10),
Nombre Varchar(100),
FechaRegistro Datetime
)
CREATE TABLE tblAutos
(
Marca Varchar(10),
Año Int,
Precio Money
)
domingo, 18 de julio de 2010
Método Select de un DataTable
Abra ocasiones en que deseemos obtener únicamente ciertos registros de un DataTable, anteriormente ya había presentado la forma de hacer uso de éste método pero ahora lo veremos un poco más a detalle.
El método Select de un DataTable nos regresa un arreglo de DataRow's, por lo que debemos haber declarado previamente un DataRow
VBNET
Dim DR() As DataRow;
C#
DataRow[] DR;
Para comenzar a ver los tres casos que voy a presentar vamos a suponer que tenemos un DataTable con cuatro campos: Clave, Nombre, Cuidad y Sexo.
Caso 1. Sin filtros
Si a nuestro método Select no le colocamos ningún filtro, el resultado nos arrojará todos los registros del DataTable en un arreglo de DataRow's.
DR = DT.Select();
Caso 2. Filtro simple
Si queremos leer algún registro en específico entonces tendremos que agregar un filtro al método Select.
DT.Select("CAMPO = VALOR")
Con la siguiente sentencia leeríamos todos los usuarios de sexo femenino.
DR = DT.Select("Sexo = 'F'");
Si queremos leer algún registro en específico entonces tendremos que agregar un filtro al método Select.
DT.Select("CAMPO = VALOR")
Con la siguiente sentencia leeríamos todos los usuarios de sexo femenino.
DR = DT.Select("Sexo = 'F'");
Caso 3. Filtros múltiples
Si queremos que el registro cumpla varias condiciones tendremos que hacer uso de los operadores AND y OR
DT.Select("CAMPO1 = VALOR1 AND CAMPO2 = VALOR2")
Con la siguiente sentencia leeríamos todos los usuarios de sexo femenino y que además radican en Monterrey.
DR = DT.Select("Sexo = 'F' AND Ciudad = 'Monterrey'");
domingo, 4 de julio de 2010
Cargar un GridView con un DataSource
Ahora veremos como llenar un GridView a partir de un DataSource y no con un DataTable como lo habíamos hecho anteriormente.
Primero tendremos que crear un DataSource, asignarle la cadena de conexión a nuestro servidor SQL y poner nuestra sentencia SQL.
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:cnConexion %>"
SelectCommand="SELECT [EmployeeID], [LastName], [FirstName] FROM [Employees]">
</asp:SqlDataSource>
Esto se puede hacer en modo diseño, para evitar tener que ingresar el código de forma directa.
Posteriormente debemos asignarle nuestro DataSource al GridView de nuestra página.
<asp:GridView ID="grdListado" runat="server" AutoGenerateColumns="False"
DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID"
InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName"
SortExpression="FirstName" />
</Columns>
</asp:GridView>
Si le asignamos el DataSource en modo diseño, el Visual Studio generará automáticamente las columnas del GridView, lo que nos facilitará aun mas las cosas.
Saludos...
domingo, 13 de junio de 2010
Metodo Compute de un DataTable con filtros
Ahora, lo que haremos será utilizar filtros en el método Compute.
Siguiendo con nuestro ejemplo anterior, supongamos que deseemos obtener el promedio de hombres o mujeres; nuestra sentencia quedaría de la siguiente manera:
DT.Compute("AVG(Promedio)", "(Sexo = 'M')") 'Promedio de calificaciones de mujeres
DT.Compute("AVG(Promedio)", "(Sexo = 'H')") 'Promedio de calificaciones de hombre
También podemos tener mas de una condición utilizando los operadores AND ú OR, por ejemplo, con la siguiente sentencia obtendriamos el promedio de hombres que se llaman Manuel.
DT.Compute("AVG(Promedio)", "(Sexo = 'H') AND (Nombre = 'Manuel')")
Aquí también tenemos la opción de utilizar el operador LIKE de la misma manera en que se utiliza en las sentencias SQL, por ejemplo, con la siguiente línea podremos saber cuantos alumnos tienen un nombre que comienza con la letra A.
DT.Compute("COUNT(Nombre)", "(Nombre LIKE 'A%')")
También hay que considerar que cuando nuestro DataTable no encuentre registros que cumplan las restricciones que estamos poniendo nos devolverá un valor nulo.
ne...
Siguiendo con nuestro ejemplo anterior, supongamos que deseemos obtener el promedio de hombres o mujeres; nuestra sentencia quedaría de la siguiente manera:
DT.Compute("AVG(Promedio)", "(Sexo = 'M')") 'Promedio de calificaciones de mujeres
DT.Compute("AVG(Promedio)", "(Sexo = 'H')") 'Promedio de calificaciones de hombre
También podemos tener mas de una condición utilizando los operadores AND ú OR, por ejemplo, con la siguiente sentencia obtendriamos el promedio de hombres que se llaman Manuel.
DT.Compute("AVG(Promedio)", "(Sexo = 'H') AND (Nombre = 'Manuel')")
Aquí también tenemos la opción de utilizar el operador LIKE de la misma manera en que se utiliza en las sentencias SQL, por ejemplo, con la siguiente línea podremos saber cuantos alumnos tienen un nombre que comienza con la letra A.
DT.Compute("COUNT(Nombre)", "(Nombre LIKE 'A%')")
También hay que considerar que cuando nuestro DataTable no encuentre registros que cumplan las restricciones que estamos poniendo nos devolverá un valor nulo.
ne...
Método Compute de un DataTable
Ahora veremos las funciones más importantes del método Compute de un DataTable, tales como Count, Max, Min y Avg.
Para ello, crearemos un listado de alumnos con sus respectivos promedios y a partir de esos promedios haremos nuestros cálculos.
Nuestro DataTable estará formado por los campos Nombre, Sexo y Promedio.
Con la siguiente línea obtendremos el promedio de calificaciones de nuestros alumnos.
DT.Compute("AVG(Promedio)", "")
Con la siguiente línea obtendremos la calificación máxima de los alumnos
DT.Compute("MAX(Promedio)", "")
Con la siguiente línea obtendremos la calificación mínima de los alumnos
DT.Compute("MIN(Promedio)", "")
Con la siguiente línea obtendremos el número de alumnos
DT.Compute("COUNT(Nombre)", "")
Con la siguiente línea obtendremos la suma de las calificaciones de los alumnos
DT.Compute("SUM(Promedio)","")
Por ahora no estamos usando ningun filtro, más adelante veremos como utilizarlos.
Para ello, crearemos un listado de alumnos con sus respectivos promedios y a partir de esos promedios haremos nuestros cálculos.
Nuestro DataTable estará formado por los campos Nombre, Sexo y Promedio.
Con la siguiente línea obtendremos el promedio de calificaciones de nuestros alumnos.
DT.Compute("AVG(Promedio)", "")
Con la siguiente línea obtendremos la calificación máxima de los alumnos
DT.Compute("MAX(Promedio)", "")
Con la siguiente línea obtendremos la calificación mínima de los alumnos
DT.Compute("MIN(Promedio)", "")
Con la siguiente línea obtendremos el número de alumnos
DT.Compute("COUNT(Nombre)", "")
Con la siguiente línea obtendremos la suma de las calificaciones de los alumnos
DT.Compute("SUM(Promedio)","")
Por ahora no estamos usando ningun filtro, más adelante veremos como utilizarlos.
domingo, 30 de mayo de 2010
Funciones básica de un DataTable
Ahora lo que veremos será aprender a utilizar las funciones básicas de un DataTable, veremos como declarar un DataTable, agregar registros, eliminar registros, actualizar registros, entre otras opciones.
La mayoría de las sentencias no difieren entre C# y VB.NET (a excepción que en C# todas las sentencias terminan con punto y coma), por lo que si no aparece la marcación de C# ó VB.NET implica que funciona igual en ambos lenguajes.
Declaración de un DataTable
La creación de un DataTable se hace con la siguiente sentencia:
C#
DataTable DT = new DataTable();
VB
Dim DT As New DataTable()
Agregar columnas a un DataTable
Para agregar columnas a un Datatable se hace de la siguiente manera:
DT.Columns.Add([NOMBRE_COLUMNA], [TIPO_DATO])
Por ejemplo:
DT.Columns.Add("Clave", Type.GetType("System.String"))
Algunos de los tipos de datos que puede tener una columna de un DataTable: String, Int16, Int32, Int64, Byte, DateTime, etc.
También, debo recalcar que el tipo de dato deberá ingresarse correctamente, es decir, tomando en cuenta las letras que son minúsculas y las que son mayúsculas, ya que si intentas poner por ejemplo: system.datetime el sistema te marcara error, por lo que lo correcto es hacer esto: System.DateTime.
Agregar registros a un DataTable
Agregar registros a un DataTable es relativamente fácil, solo se deben poner los valores separados por una coma, tal como se muestra a continuación:
Por ejemplo:
DT.Rows.Add(6, "Sánchez", "811-489-99-01")
Eliminar registros de un DataTable
Para eliminar un registro de un DataTable, solo hay que indicarle que registro es el que queremos eliminar.
DT.Rows.RemoveAt([NÚMERO_FILA])
Por ejemplo:
DT.Rows.RemoveAt(4)
Actualizar registros de un DataTable
Para actualizar un registro hay que indicarle la columna y el renglón que queremos actualizar.
DT.Rows[[NÚMERO_FILA]][[NÚMERO_COLUMNA]] = [VALOR]
VB
DT.Rows([NÚMERO_FILA])([NÚMERO_COLUMNA]) = [VALOR]
Por ejemplo:
DT.Rows(1)(3) = 4;
Si conocemos el nombre de la columna, también podemos usar el nombre de la columna en lugar del número, por ejemplo:
DT.Rows[3][“Nombre”] = “Maldonado”
domingo, 23 de mayo de 2010
Seleccionar registros de un GridView
La última opción que nos falta por agregar a nuestro GridView es la opción de seleccionar registros.
Para ello tendremos que agregar una columna más al GridView, la columna será tipo TemplateField
<asp:TemplateField>
<ControlStyle Width="15px" Height="15px" />
<ItemTemplate>
<table cellpadding="0px" cellspacing="0px" width="100%">
<tr>
<td>
<asp:ImageButton ID="btnSeleccionar" runat="server"
ImageUrl="~/Imagenes/Seleccionar.ico"
CommandName="Select"
/>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
También le colocaremos un formato especial para las filas que estén seleccionadas, haremos que se pinten de color amarillo los registros que vayamos seleccionado.
<SelectedRowStyle BackColor="Yellow" Font-Bold="true" />
Para el caso de C# le tenemos que decir al GridView que funcion debe ejecutar al presionar el boton de Seleccionar.
OnSelectedIndexChanging="dgvListado_RowSelectedIndexChanging"
Por último, le decimos que seleccione el registro.
C#
protected void dgvListado_RowSelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
//Seleccionamos la fila
dgvListado.SelectedIndex = e.NewSelectedIndex;
//Desplegamos la información
Desplegar();
}
VB NET
Private Sub dgvListado_SelectedIndexChanging(...) Handles dgvListado.SelectedIndexChanging
'Seleccionamos la fila
dgvListado.SelectedIndex = e.NewSelectedIndex
'Desplegamos la información
Call Desplegar()
End Sub
Por ahora nuestro código no hace nada en especial, únicamente selecciona el registro que deseemos, posteriormente le podemos decir que haga algo más, pero eso lo veremos más adelante.
ne...
domingo, 9 de mayo de 2010
Formateando nuestro GridView
Ahora vamos a ponerle diseño a nuestro GridView.
Las filas de nuestro GridView serán de color Gris y las filas alternas serán de color Gris oscuro, el encabezado lo dejaremos en color Negro.
Para ello agregaremos las siguientes tres líneas al código de nuestro GridView.
<RowStyle BackColor="Gray" />
<AlternatingRowStyle BackColor="DarkGray" />
<HeaderStyle BackColor="Black" ForeColor="White" />
Nuestro GridView quedaría de la siguiente manera:
Las filas de nuestro GridView serán de color Gris y las filas alternas serán de color Gris oscuro, el encabezado lo dejaremos en color Negro.
Para ello agregaremos las siguientes tres líneas al código de nuestro GridView.
<RowStyle BackColor="Gray" />
<AlternatingRowStyle BackColor="DarkGray" />
<HeaderStyle BackColor="Black" ForeColor="White" />
Nuestro GridView quedaría de la siguiente manera:
Modificando nuestro GridView
Ahora vamos a realizar algunos cambios a nuestro grid para tener un mejor control sobre sus columnas.
Primero quitaremos la propiedad que genera automáticamente las columnas de nuestro GridView esto para poder cambiar el ancho de nuestras columnas.
Después cambiaremos nuestros CommandFields por TemplateFields, que el funcionamiento es idéntico pero con esta propiedad podremos manipular de mejor manera nuestros botones.
Entonces, nuestro GridView quedará de la siguiente manera.
<asp:GridView ID="dgvListado" runat="server"
OnRowEditing="dgvListado_RowEditing"
OnRowUpdating="dgvListado_RowUpdating"
OnRowCancelingEdit="dgvListado_RowCancelingEdit"
OnRowDeleting="dgvListado_RowDeleting"
AutoGenerateColumns="false">
<%-- AutoGenerateColumns. Quitamos la opción de que el GridView nos genere las columnas --%>
<Columns>
<asp:TemplateField>
<%-- Columna editar --%>
<ControlStyle Width="15px" Height="15px" />
<ItemTemplate>
<asp:ImageButton ID="btnEditar"
CommandName="Edit"
ImageUrl="~/Imagenes/Editar.ICO"
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:ImageButton ID="btnActualizar"
CommandName="Update"
ImageUrl="~/Imagenes/Actualizar.ICO"
runat="server" />
<asp:ImageButton ID="btnCancelar"
CommandName="Cancel"
ImageUrl="~/Imagenes/Cancelar.ico"
runat="server" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<%-- Columna eliminar --%>
<ControlStyle Width="15px" Height="15px" />
<ItemTemplate>
<asp:ImageButton ID="btnEliminar"
CommandName="Delete"
ImageUrl="~/Imagenes/Eliminar.ico"
runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Clave" DataField="Clave" ItemStyle-Width="100px" ReadOnly="true" />
<asp:BoundField HeaderText="Nombre" DataField="Nombre" ItemStyle-Width="250px" />
<asp:BoundField HeaderText="Teléfono" DataField="Telefono" ItemStyle-Width="150px" />
</Columns>
</asp:GridView>
Si están trabajando en visual basic .NET, deben eliminar las siguientes líneas:
OnRowEditing="dgvListado_RowEditing"
OnRowUpdating="dgvListado_RowUpdating"
OnRowCancelingEdit="dgvListado_RowCancelingEdit"
OnRowDeleting="dgvListado_RowDeleting"
OnRowUpdating="dgvListado_RowUpdating"
OnRowCancelingEdit="dgvListado_RowCancelingEdit"
OnRowDeleting="dgvListado_RowDeleting"
AutoGenerateColumns="false">
<%-- AutoGenerateColumns. Quitamos la opción de que el GridView nos genere las columnas --%>
<Columns>
<asp:TemplateField>
<%-- Columna editar --%>
<ControlStyle Width="15px" Height="15px" />
<ItemTemplate>
<asp:ImageButton ID="btnEditar"
CommandName="Edit"
ImageUrl="~/Imagenes/Editar.ICO"
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:ImageButton ID="btnActualizar"
CommandName="Update"
ImageUrl="~/Imagenes/Actualizar.ICO"
runat="server" />
<asp:ImageButton ID="btnCancelar"
CommandName="Cancel"
ImageUrl="~/Imagenes/Cancelar.ico"
runat="server" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<%-- Columna eliminar --%>
<ControlStyle Width="15px" Height="15px" />
<ItemTemplate>
<asp:ImageButton ID="btnEliminar"
CommandName="Delete"
ImageUrl="~/Imagenes/Eliminar.ico"
runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Clave" DataField="Clave" ItemStyle-Width="100px" ReadOnly="true" />
<asp:BoundField HeaderText="Nombre" DataField="Nombre" ItemStyle-Width="250px" />
<asp:BoundField HeaderText="Teléfono" DataField="Telefono" ItemStyle-Width="150px" />
</Columns>
</asp:GridView>
Si están trabajando en visual basic .NET, deben eliminar las siguientes líneas:
OnRowEditing="dgvListado_RowEditing"
OnRowUpdating="dgvListado_RowUpdating"
OnRowCancelingEdit="dgvListado_RowCancelingEdit"
OnRowDeleting="dgvListado_RowDeleting"
Suscribirse a:
Entradas (Atom)
-
Ahora lo que vamos a hacer es validar los usuarios que vayamos agregando para evitar tener dos usuarios con la misma clave. Para hacer esto ...
-
Lo que pretendemos lograr es poder agregar registros a un GridView utilizando un DataTable que contenga toda la información que queremos mos...
-
Ahora bien, si lo que queremos es que nos salga una imagen en lugar de una leyenda tendremos que hacer lo siguiente. En mi caso, voy a agreg...