Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Visual Basic




Enviado por aaaaa0264



    1. ¿Que es
      SQL?
    2. Ado net active x data
      object
    3. SQL select: consulta o despliegue
      o selección
    4. SQL insert: inserción o
      adición de registros
    5. SQL select:
      búsqueda
    6. Select where: filtros
      SQL
    7. SQL uppadte: operaciones con
      campos
    8. SQL delete: baja o
      eliminación
    9. SQL update: edición de
      registros
    10. Gráficos Sql
      select

    INTRODUCCIÓN

    Visual Basic es un lenguaje
    de programación de propósito
    general, con una gran
    potencia en toda su
    estructura. Su implementación en
    el
    sistema operativo
    Windows y sus
    herramientas visuales, han hecho de este

    lenguaje un
    líder indiscutible en lo que
    a
    desarrollo de aplicaciones se refiere. Con la
    versión 3.0. se implementó la
    gestión de bases
    de datos a muy alto nivel, pudiendo gestionar
    bases de datos
    de tipo Access,
    Paradox, dBASE, FoxPro,
    etc.

    Este paso de gigante ha hecho de
    Visual Basic uno de los lenguajes favoritos por
    los desarrolladores de aplicaciones de bases
    de datos, en especial el hecho de que

    Visual Basic implemente
    el lenguaje
    SQL, uno de los más potentes y
    sencillos lenguajes de bases de datos.

    ¿QUE ES SQL?

    SQL (Structured Query Language ó
    Lenguaje Estructurado de Consulta), es un
    lenguaje
    bastante sencillo, principalmente orientado a bases de datos y,
    sobre todo, al manejo de consultas.
    Visual Basic incorpora esta extensión
    junto a nuestras bases de datos, obteniendo
    potentes resultados. De hecho, las consultas que se realizan
    en Access,
    están desarrolladas o basadas en este lenguaje, por lo que
    su implementación en
    Visual Basic no es complicada.

    El
    objetivo principal de SQL es la
    realización de consultas y cálculos con los datos
    de una o varias tablas.

    Consejos para escribir mandatos en SQL:
    He aquí una serie de consejos (a veces normas),
    que hay que tener en cuenta a la hora de escribir mandatos SQL en
    nuestras aplicaciones en Visual Basic:
    1. Un mandato en SQL se expresa en una cadena de caracteres o
    String.
    2. Dicho mandato se puede escribir en la
    propiedad RecordSource de un

    control Data (más adelante, podremos
    prescindir del
    control Data para realizar nuestras consultas),
    con el fin de crear una consulta en la interfaz.
    3. Los nombres de los campos especificados (y de las tablas), que
    contengan más de una palabra, han de encerrarse entre
    corchetes ([nombre]). Como norma general, se suelen escribir
    siempre entre corchetes.
    4. Para especificar un determinado campo de una determinada
    tabla, se ha de escribir primero el nombre de la tabla, un punto
    y, a continuación, el nombre del campo
    (nombre_tabla.nombre_campo).
    5. Al especificar una expresión de búsqueda, si
    ésta se refiere a una expresión de caracteres,
    éstos han de encerrarse entre comillas simples
    ('expresión_a_buscar').
    6. Para especificar una fecha en una búsqueda, ésta
    debe encerrarse entre signos
    numeral
    (#fecha#) en Access,
    Dbase X, etc., y entre comillas simples ('fecha') para
    bases
    Sql Server, Informix, etc.
    7. Si se utiliza la
    propiedad RecordSource del control Data,
    para crear nuestras consultas en SQL, tras introducir el mandato
    SQL (siempre como una expresión de cadena) es necesario
    refrescar el control Data (control_data.Refresh).

    Mandato SQL Estándar:
    El
    lenguaje SQL está compuesto por una serie
    de sentencias y de cláusulas muy reducidas en
    número, pero muy potentes en efectividad. De entre todas
    las palabras, existen cuatro que son las más utilizadas,
    estando compuestas por una sentencia y por tres
    cláusulas:
    SELECT lista_campos FROM lista_tablas [WHERE criterios [ORDER BY
    lista_campos]]

    ADO NET
    ACTIVE X DATA OBJECT

    El Nuevo Modelo De
    Datos De Microsoft Es
    Ado Net Este Modelo Descansa En Una Serie De Objetos
    Especializados Que Facilitan El Procesamiento De Una Base De
    Datos.

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    Fuente Microsoft net

    Empezando:

    El problema es comunicar un programa o
    aplicación con una base de datos y más que
    comunicar se pretende que el programa o aplicación realice
    una serie de procesos u
    operaciones
    con la base de datos o mejor aun con el conjunto de tablas que
    contiene una base de datos.

    La primera nota a recordar es que una base de datos
    puede estar físicamente en el servidor y en
    algún fólder o directorio del disco duro de
    dicha maquina servidora por ejemplo,
    c:progfacilmisitiomibase.mbd, como se observa la base que se
    construyo en Access
    (mibase.mbd) se almaceno en el disco c en el fólder
    progfacil y dentro del subfolder misitio.

    Sin embargo también es necesario conocer que
    así como existen servidores de
    paginas ( Web Server ),
    servidores de correo ( mail server ), servidores de ftp ( ftp
    server ), etc., también existen servidores de bases de
    datos (database server), los mas comunes son el sqlserver de
    microsoft, oracle,
    mysql, etc.,
    estos servidores también pueden crear, administrar y
    procesar una base de datos por supuesto que el procedimiento que
    se dio para crearla en access en el tema
    anterior no se puede usar para crear y cargar una base de datos
    en un servidor de bases de datos. El modo de comunicarse entre
    nuestro programa visual basic net
    o aplicación y la base de datos (ya sea física o un dbserver)
    implica que ambos manejen un lenguaje de
    programación común, es decir no se puede mandar
    una instrucción en C# o en borland delphi
    java a la base
    de datos y además esperar que esta ultima la entienda (
    para entender esto, una razón muy sencilla es que la base
    de datos tendría que conocer o comprender todos los
    lenguajes de
    programación), para resolver este problema de comunicación es que se usa un lenguaje
    común de bases de datos que tanto los lenguajes de
    programación existentes como las bases de
    datos entienden, este lenguaje común de bases de datos es
    el SQL (structured query languaje) o lenguaje estructurado de
    consultas.

    La pregunta es ahora como mandamos las instrucciones sql
    a la base de datos, la respuesta son los OBJETOS ADO.NET
    que estamos analizando en orden y propósito de
    uso.

    OBJETO CONNECTION:- OBJETO QUE SE UTILIZA
    PARA ESTABLECER UNA CONECCION O ENLACE A LA BASE DE
    DATOS.

    Este objeto primero se tendrá que crear en el
    programa y luego se tendrá que cargar con dos
    parámetros (ver ejemplo mas abajo), el primer
    parámetro es el proveedor o la fuente que proporcionara
    los datos, los proveedores o
    fuentes de
    datos que existen son:

    SQLSERVER NET DATA PROVIDER.- QUE SE ESPECIALIZA EN
    COMUNICARSE Y PROCESAR BASES DE DATOS CONSTRUIDAS CON MICROSOF
    SQL SERVER
    V7.0

    OLEDB.NET DATA PROVIDER.- QUE SE ESPECIALIZA EN
    COMUNICARSE Y PROCESAR BASES DE DATOS QUE A LA FECHA DEL PRESENTE
    LIBRO UTILIZEN
    ALGUNOS DE LOS SIGUIENTES DRIVERS, SQLOLEDB ( VERSIONES
    ANTERIORES DE SQL SERVER DE MICROSOFT), MSDAORA (ORACLE),
    MICROSOFT.JET ( ACCESS Y ALGUNOS OTROS DBMS DE
    MICROSOFT)

    ODBC.NET .- BASES DE DATOS QUE USAN ODBC COMO MEDIO DE
    COMUNICACION CON OTRAS BASES DE DATOS Y APLICACIONES, COMO NOTA A
    CONSIDERAR ODBC.NET NO ESTA INCLUIDA POR DEFAULT EN
    MICROSOFT.NET, SE TIENE QUE BAJAR DE MICROSOFT.

    El segundo parámetro es la propia base de datos
    con la cual se comunicara el programa o
    aplicación.

    Ejemplo del objeto CONNECTION

    DIM coneccion AS OLEDBCONNECTION

    conation = NEW
    OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfacillauromibase.mdb")

    Es una sola string y los dos parámetros
    mencionados van separados por el punto y coma.

    ATENCION es DATA SOURCE= no usar DATASOURCE= estan
    advertidos.

    Ejemplos de los otros proveedores o fuentes
    mencionados:

    Ejemplos de los otros proveedores o fuentes
    mencionados:

    //Provider=MSDAORA; Data Source=ORACLE8i7; User
    ID=OLEDB; Password=OLEDB

    //Provider=Microsoft.Jet.OLEDB.4.0; Data
    Source=c:binLocalAccess40.mdb;

    //Provider=SQLOLEDB;Data Source=MySQLServer;Integrated
    Security=SSPI;

    OBJETO COMMAND.- Este objeto puede
    contener directamente una instrucción SQL y enviarla al
    objeto conección ya descrito.

    Ya establecido el canal o enlace entre el programa aspx
    y la base de datos vía el objeto CONECCION, se debe mandar
    la instrucción SQL a la propia base de datos, sin embargo
    en un programa de vbasic por supuesto que no puede contener
    instrucciones de otros lenguajes de programación como el
    de SQL, es por esto que se deberán usar algunos de los
    otros objetos de ADO.NET para que estos objetos transporten la
    instrucción sql hacia la base de datos (y transporte de
    regreso al servidor los datos de alguna tabla), uno de estos
    objetos es el objeto COMMAND.

    Este objeto command primero se tendrá que crear y
    luego cargarle dos parámetros que son:

    La instrucción sql y el objeto conneccion que ya
    se vio en el párrafo
    anterior, ejemplo:

    DIM orden AS OLEDBCOMMAND

    Orden = NEW OLEDBCOMMAND("select * from mitabla",
    coneccion)

    Si esta muy grande o muy compleja la instrucción
    sql, es más conveniente crearla en una variable string y
    poner la variable como parámetro ejemplo:

    DIM orden AS OLEDBCOMMAND

    DIM q AS STRING

    q = "select * from mitabla"

    orden = NEW OLEDBCOMMAND(q, coneccion)

    Sin embargo ciertas instrucciones de sql, requieren que
    se manden los datos a la base de datos, respetando el tipo de
    dato con los cuales los creo el software de bases de datos,
    por ejemplo si edad en access se declaro como NUMBER, la
    instrucción sql que pretenda cargar dicho campo, tiene la
    obligación de mandarla con este tipo de dato asociado,
    instrucciones SQL que permiten cargar o capturar ese campo edad
    son INSERT o UPADTE.

    Para resolver este problema, usaremos en la string q,
    unas variables
    llamadas VARIABLES PARAMETROS que se simbolizan usando el
    símbolo @ antes de la variable y además al objeto
    COMMAND le agregamos dos instrucciones extras que permiten
    agregar a la string q el dato y el tipo de dato, ejemplo, se
    tienen seis renglones ya capturados en nuestra tabla y se quiere
    agregar un séptimo renglón con los siguientes
    datos, clave=7, nombre="rana" peso=3.14 , usaremos la
    instrucción SQL INSERT ej:

    DIM orden AS OLEDBCOMMAND

    DIM q, clave, nombre, peso AS STRING

    Clave = 7: nombre = "rana": peso = 3.14

    Q ="insert into mitabla(clave,nombre,peso)
    values(@CLAVE, @NOMBRE, @PESO)"

    orden= new OleDbCommand(q, coneccion)

    orden.Parameters.Add(new OleDbParameter("@CLAVE",
    OleDbType.Integer))

    orden.Parameters("@CLAVE").Value = clave

    orden.Parameters.Add(new OleDbParameter("@NOMBRE",
    OleDbType.VarWChar, 40))

    orden.Parameters("@NOMBRE").Value = nombre

    orden.Parameters.Add(new OleDbParameter("@PESO",
    OleDbType.Double))

    orden.Parameters("@PESO").Value = edad

    Observar que para cada variable parametro(@), se tienen
    que cargar dos elementos, el valor y el
    tipo de dato correpondiente.

    Aunque en valor se mandan string's, en oledbtype se hace
    un mapeo, relación o conversión al tipo de dato que
    se uso en access, tener mucho cuidado que exista una
    relación igual o cuando este programa se ejecute el
    servidor les va a mandar un error o excepción de sql, que
    les intenta decir que el tipo de dato que mandaron a la base de
    datos, no es igual al que se uso para crearlo en la base de
    datos.

    Los OLEDBTYPE más comunes
    son:

    BigInt A 64-bit signed integer (DBTYPE_I8). This
    maps to Int64.

    Binary A stream of binary data (DBTYPE_BYTES).
    This maps to an Array of type Byte.

    Boolean A Boolean value (DBTYPE_BOOL). This maps
    to Boolean.

    BSTR A null-terminated character string of
    Unicode characters (DBTYPE_BSTR). This maps to String.

    Char A character string (DBTYPE_STR). This maps
    to String.

    Currency A currency value ranging from
    -263 (or -922,337,203,685,477.5808) to 2 63
    -1 (or +922,337,203,685,477.5807) with an accuracy to a
    ten-thousandth of a currency unit (DBTYPE_CY). This maps to
    Decimal.

    Date Date data, stored as a double (DBTYPE_DATE).
    The whole portion is the number of days since December 30, 1899,
    while the fractional portion is a fraction of a day. This maps to
    DateTime.

    DBDate Date data in the format yyyymmdd
    (DBTYPE_DBDATE). This maps to DateTime.

    DBTime Time data in the format hhmmss
    (DBTYPE_DBTIME). This maps to TimeSpan.

    DBTimeStamp Data and time data in the format
    yyyymmddhhmmss (DBTYPE_DBTIMESTAMP). This maps to
    DateTime.

    Decimal A fixed precision and scale numeric value
    between -1038 -1 and 10 38 -1
    (DBTYPE_DECIMAL). This maps to Decimal.

    Double A floating point number within the range
    of -1.79E +308 through 1.79E +308 (DBTYPE_R8). This maps to
    Double.

    Empty No value (DBTYPE_EMPTY). This maps to
    Empty.

    Error A 32-bit error code (DBTYPE_ERROR). This
    maps to Exception.

    Filetime A 64-bit unsigned integer representing
    the number of 100-nanosecond intervals since January 1, 1601
    (DBTYPE_FILETIME). This maps to DateTime.

    Guid A globally unique identifier (or GUID)
    (DBTYPE_GUID). This maps to Guid.

    IDispatch A pointer to an IDispatch interface
    (DBTYPE_IDISPATCH). This maps to Object. Note This data type is
    not currently supported by ADO.NET. Usage may cause unpredictable
    results.

    Integer A 32-bit signed integer (DBTYPE_I4). This
    maps to Int32.

    IUnknown A pointer to an IUnknown interface
    (DBTYPE_UNKNOWN). This maps to Object. Note This data type is not
    currently supported by ADO.NET. Usage may cause unpredictable
    results.

    LongVarBinary A long binary value (OleDbParameter
    only). This maps to an Array of type Byte.

    LongVarChar A long string value (OleDbParameter
    only). This maps to String.

    LongVarWChar A long null-terminated Unicode
    string value (OleDbParameter only). This maps to String.
    Numeric An exact numeric value with a fixed precision and
    scale (DBTYPE_NUMERIC). This maps to Decimal. PropVariant
    An automation PROPVARIANT (DBTYPE_PROP_VARIANT). This maps to
    Object.

    Single A floating point number within the range
    of -3.40E +38 through 3.40E +38 (DBTYPE_R4). This maps to
    Single.

    SmallInt A 16-bit signed integer (DBTYPE_I2).
    This maps to Int16.

    TinyInt A 8-bit signed integer (DBTYPE_I1). This
    maps to SByte.

    UnsignedBigInt A 64-bit unsigned integer
    (DBTYPE_UI8). This maps to UInt64.

    UnsignedInt A 32-bit unsigned integer
    (DBTYPE_UI4). This maps to UInt32.

    UnsignedSmallInt A 16-bit unsigned integer
    (DBTYPE_UI2). This maps to UInt16.

    UnsignedTinyInt A 8-bit unsigned integer
    (DBTYPE_UI1). This maps to Byte.

    VarBinary A variable-length stream of binary data
    (OleDbParameter only). This maps to an Array of type Byte.
    VarChar A variable-length stream of non-Unicode characters
    (OleDbParameter only). This maps to String.

    Variant A special data type that can contain
    numeric, string, binary, or date data, as well as the special
    values Empty and Null (DBTYPE_VARIANT). This type is assumed if
    no other is specified. This maps to Object.

    VarNumeric A variable-length numeric value
    (OleDbParameter only). This maps to Decimal.

    VarWChar A variable-length, null-terminated
    stream of Unicode characters (OleDbParameter only). This maps to
    String.

    WChar A null-terminated stream of Unicode
    characters (DBTYPE_WSTR). This maps to String.

    Aun mas con el ejemplo anterior el objeto COMMAND esta
    construido y preparado y cargado pero todavía no se manda
    desde el programa a la base de datos, es decir le falta usar las
    siguientes tres propiedades, ejemplo;

    DIM orden AS OLEDBCOMMAND

    DIM q, clave, nombre, peso AS STRING

    Clave = 7: nombre = "rana": peso = 3.14

    Q ="insert into mitabla(clave,nombre,peso)
    values(@CLAVE, @NOMBRE, @PESO)"

    orden= new OleDbCommand(q, coneccion)

    orden.Parameters.Add(new OleDbParameter("@CLAVE",
    OleDbType.Integer))

    orden.Parameters("@CLAVE").Value = clave

    orden.Parameters.Add(new OleDbParameter("@NOMBRE",
    OleDbType.VarWChar, 40))

    orden.Parameters("@NOMBRE").Value = nombre

    orden.Parameters.Add(new OleDbParameter("@PESO",
    OleDbType.Double))

    orden.Parameters("@PESO").Value = edad

    orden.Connection.Open()

    orden.ExecuteNonQuery()

    orden.Connection.Close()

    Sencillo abrir la conexión, mandar o ejecutar la
    instrucción y cerrar la conexión.

    OBJETOS DATAADAPTER Y DATASET:(dos por
    uno)

    Con los objetos CONNECTION y COMMAND ya se pueden
    efectuar cualquiera de la operaciones SQL descritas, el problema
    es que pasa con el usuario, cuando va a ver base de datos o mejor
    aun las tablas que estan en la base de datos en disco.

    DATASET:- Es una copia en memoria(de la
    maquina cliente) de la
    base de datos( y todas sus tablas) que se encuentra en
    disco.

    DATAADAPTER.- En principio es muy similar al
    objeto COMMAND es decir se usa para transportar instrucciones SQL
    a la base en disco, de hechos sus formatos e instrucciones son
    muy similares a los vistos para el objeto COMMAND, su
    diferencia principal es que dataadapter esta mas especializado y
    contiene una serie de métodos
    que facilitan la interacción entre el DATASET y la Base de
    Datos en disco.

    En particular muchos de los programas que se
    verán en temas posteriores solo usan los objetos
    CONNECTION, DATAADAPTER y DATASET.

    Otra vez, dataadpater se especializa en transportar
    instrucciones sql a la base de datos en disco pero además
    se utiliza para cargar la tabla en memoria o dataset del
    cliente.

    Ejemplo:

    ' abriendo la coneccion

    coneccion = new
    OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    ' cargando el adapter con la instruccion sql

    canal=new OleDbDataAdapter("select * from mitabla",
    coneccion)

    ' cargando el dataset

    tabla= new DataSet()

    canal.Fill(tabla, "mitabla")

    Como se observa en este ejemplo muy sencillo, el
    dataadapter(canal) esta funcionando de manera muy similar al
    primer ejemplo que se vio del objeto COMMAND, pero tengan la
    seguridad que
    también se pueden usar variables parámetros y
    agregarles los dos tipos de parámetros a este objeto
    dataadpater.

    Observar que su propiedad FILL
    carga el DATASET(tabla) con una de las tablas en disco, recordar
    que en la base de datos puede contener muchas tablas.

    Además esa propiedad FILL es equivalente a las
    tres ultimas instrucciones del objeto COMMAND, es decir open,
    executenonquery y close, mas facil verdad.

    DATAREADER y DATASET:

    Observar que también se usan en forma conjunta,
    primero es muy similar en uso y función
    que el objeto DATAADAPATER, la diferencia entre datareader y
    dataadapter es el tipo de base de datos con las cuales se pueden
    comunicar, dataadpater se especializan en bases de datos
    relacionales y datareader se especializa en archivos que no
    se estudian en este curso.

    También es importante mencionar que datareader
    es el objeto de ADO.NET mas parecido al objeto RESULTSET que uso
    mucho en el ADO anterior de microsoft.

    EN general se han visto de manera sencilla los
    principales objetos ADO.ASP( connection,
    command, datareader, dataadapter, dataset), sin embargo la tabla
    o las tablas y la base de datos que se tiene en disco o
    sirviéndola algún servidor de bases de datos, se ha
    quedado en la memoria de
    la maquina del cliente, ADO.NET ha terminado su trabajo y su
    función.

    Para mandar el dataset a el browser se tendrá que
    pasar a algún tipo de objeto visible que soporte el
    browser, los objetos que se pueden usar para mandar el dataset a
    pantalla son:

    1.- COMPONENTE TABLE DE HTML

    2.- COMPONENTE HTMLTABLE DE ASP

    3.- COMPONENTE DATAGRID DE ASP NET

    SQL
    SELECT: CONSULTA O DESPLIEGUE O SELECCION

    Existen una serie de operaciones y procesos que son muy
    comunes contra una tabla en una base de datos en disco la mas
    común es desplegar todos los renglones de la tabla que
    estan almacenados en disco, a este proceso le
    llamaremos SELECCION, consulta o despliegue (muy
    original).

    Como se indico anteriormente la
    comunicación con la base de datos se tendrán
    que dar usando el lenguaje
    especializado de bases de datos llamado SQL (structured query
    language), la instrucción sql que se usa para resolver
    este problema tiene el siguiente formato:

    SELECT [listacampos, * o ALL] FROM TABLA

    El procedimiento que se intenta seguir cuando se
    construya un programa asp.net que tenga que manipular una tabla
    en disco deberá seguir los siguientes pasos:

    1.- Crear una conección o enlace a la base de
    datos.

    2.- Abrir la conección a la base de
    datos.

    3.- Crear el enlace o adapater y cargarlo con la
    instrucción sql (o cargar primero la instrucción
    sql en un objeto command y mandarlo a través del
    adapter)

    4.- Crear el dataset y cargarlo a través del
    adapter

    5.- Cargar el DataGrid con el dataset y
    enlazarlo(binding)

    6.- Procesar el datagrid (editar un renglón,
    agregar un renglón, modificar un renglón,
    etc.)

    7.- Cerrar la conección

    Código prog25.aspx

    <%@ PAGE LANGUAGE=VB%>

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <FORM RUNAT=SERVER>

    <ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER

    Width=400

    BackColor=#ccccff

    BorderColor=black

    ShowFooter=false

    CellPadding=3

    CellSpacing=0

    Font-Name=Verdana

    Font-Size=8pt

    HeaderStyle-BackColor=#aaaadd

    EnableViewState=false

    /></FORM>

    <html>

    <script runat=server>

    ' creando y cargando coneccion, adpater, dataset como
    variables globales

    DIM coneccion AS OLEDBCONNECTION

    DIM canal AS OLEDBDATAADAPTER

    DIM tabla AS DATASET

    SUB Page_Load(Sender As Object, E As
    EventArgs)

    ' enlazando coneccion a la base de datos

    coneccion = NEW
    OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0; Data
    Source=c:progfaciltusitiomibase.mdb")

    ' cargando el adapter con la instruccion sql

    canal = NEW OLEDBDATAADAPTER("select * from mitabla",
    coneccion)

    ' cargando el dataset

    tabla = NEW DATASET()

    canal.FILL(tabla, "mitabla")

    ' cargando el datagrid

    TABLAGRID.DATASOURCE = tabla

    TABLAGRID.DATAMEMBER = "mitabla"

    TABLAGRID.DATABIND()

    ' cerrando conneccion

    coneccion.CLOSE()

    END SUB

    </script>

    corrida prog25.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    1.- Se sigue el procedimiento genérico para
    procesar tablas usando ADO.NET

    2.- Observar y siempre incluir los namespaces
    indicados.

    3.- Se usa una PAGINA (page) y su evento pageload() para
    desplegar la tabla(mitabla) que esta en la base de datos(mibase),
    se puede cargar e inicializar usando un objeto button=desplegar
    con este mismo código
    cargado en su evento onclick, pero es criterio de ustedes como se
    despliega la tabla.

    4.- Recordar que DATAGRID es un WEBCONTROL por tanto hay
    que crearlo e inicializarlo al principio del programa,
    también recordar que datagrid tiene muchas propiedades que
    le mejoran la interfase con que se despliega y es en esta parte
    donde se cargan dichas propiedades.

    5.- Se empieza creando las variables globales a ocupar y
    abriendo la conección a la base de datos, si se les hace
    muy grande la string del proveedor, pueden cargarla primero en
    una variable string y carguen la string en el constructor de la
    conección, pero esto es opcional.

    6.- Tomar nota como se hace la referencia a la base de
    datos.

    7.- Se crea el adapter y se carga el constructor con la
    instrucción sql y la conexión, aquí es
    necesario entender que existen varias maneras de hacer
    esto:

    Cargar una string con el sql y crear y usar un objeto
    command directamente por ejemplo comandtext=stringsql; y luego
    todavía se tendría que ejecutar con
    executenonquery(que ejecuta una string que no regresa datos por
    ejemplo insert o update para un adpater) o executereader(si en
    lugar de usar adapter se usa un reader) o executescalar( método que
    regresa un solo dato de la base de datos).

    Usar algunas de las funciones
    descritas del adapter por ejemplo
    adpatercommandselect(stringsql).

    Pero lo mas sencillo fue usar el método que se
    puso en el programa, es decir crear el adapter y pasarle
    directamente la instrucción sql.

    8.- Luego se creo el dataset y se cargo con toda la base
    de datos en disco, entender esto bien, dataset puede quedar
    cargado con todas las tablas que tenga la base de datos, por eso
    se usa un FILL para pasar al dataset solo una de las tablas(mi
    tabla), esto da origen a dos notas:

    8.1.- Al programar mas adelante se ocupara
    explícitamente indicarle al compilador con cual tabla se
    va a trabajar, es por esta razón que se verán
    instrucciones tales como tabla.tables["clientes"].etc.etc. Aquí se esta diciendo
    al compilador que del dataset(TABLA) se va a realizar una proceso
    con la tabla de clientes.

    8.2.- Para procesar dos o mas tablas, entonces se tendra
    que usar mucho el formato que se vio en la nota 8.1

    9.- Al final se carga el datagrid , se pega( binding )
    al dataset y se cierra la base de datos.

    SQL
    INSERT: INSERCIÓN O ADICIÓN DE
    REGISTROS

    Insertar o agregar registros o
    renglones nuevos a una tabla en disco, es un proceso sencillo que
    usa la siguiente instrucción sql:

    INSERT INTO TABLA(CAMPO1,CAMPO2..)
    VALUES(VALOR1,VALOR2..)

    Recordar que solo se esta usando lo mínimo de
    cada instrucción sql.

    Prog26.aspx

    <%@ PAGE LANGUAGE=VB%>

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <FORM RUNAT=SERVER>

    CLAVE<ASP:TEXTBOX ID=CLAVE SIZE=3
    RUNAT=SERVER/>

    NOMBRE<ASP:TEXTBOX ID=NOMBRE SIZE=10
    RUNAT=SERVER/>

    EDAD<ASP:TEXTBOX ID=EDAD SIZE=3
    RUNAT=SERVER/>

    <ASP:BUTTON ONCLICK=INSERTAR TEXT=INSERTAR
    RUNAT=SERVER /><BR>

    <ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER

    Width=400

    BackColor=#ccccff

    BorderColor=black

    ShowFooter=false

    CellPadding=3

    CellSpacing=0

    Font-Name=Verdana

    Font-Size=8pt

    HeaderStyle-BackColor=#aaaadd

    EnableViewState=false/>

    </FORM>

    <script runat=server>

    ' creando y cargando coneccion, adpater, dataset como
    variables globales

    DIM coneccion AS OLEDBCONNECTION

    DIM canal AS OLEDBDATAADAPTER

    DIM tabla AS DATASET

    SUB Page_Load(Sender As Object, E As
    EventArgs)

    coneccion = NEW
    OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    ' cargando el adapter con la instruccion sql

    canal = NEW OLEDBDATAADAPTER("select * from mitabla",
    coneccion)

    ' cargando el dataset

    tabla = NEW DATASET()

    canal.FILL(tabla, "mitabla")

    ' cargando el datagrid

    TABLAGRID.DATASOURCE = tabla

    TABLAGRID.DATAMEMBER = "mitabla"

    TABLAGRID.DATABIND()

    ' cargando el nuevo textbox con la nueva clave clave
    correpondiente

    DIM cren, nvaclave AS INTEGER

    cren = tabla.Tables("mitabla").Rows.Count

    nvaclave = tabla.Tables("mitabla").Rows(cren-1)(0) +
    1

    CLAVE.Text=nvaclave

    END SUB

    SUB INSERTAR(Sender As Object, E As
    EventArgs)

    ' creando y cargando un objeto OLEDBCOMMAND

    ' instruccion sql insert into mitabla(listacampos)
    values(listadatos)

    ' @variable es una variable de tipo command o
    parametro

    DIM q AS STRING

    DIM orden as OLEDBCOMMAND

    q = "insert into mitabla(clave,nombre,edad)
    values(@CLAVE, @NOMBRE, @EDAD)"

    orden = NEW OLEDBCOMMAND(q, coneccion)

    orden.Parameters.Add(new OleDbParameter("@CLAVE",
    OleDbType.Integer))

    orden.Parameters("@CLAVE").Value = CLAVE.Text

    orden.Parameters.Add(new OleDbParameter("@NOMBRE",
    OleDbType.VarWChar, 20))

    orden.Parameters("@NOMBRE").Value =
    NOMBRE.Text

    orden.Parameters.Add(new OleDbParameter("@EDAD",
    OleDbType.Integer))

    orden.Parameters("@EDAD").Value = EDAD.Text

    orden.Connection.Open()

    orden.ExecuteNonQuery()

    orden.Connection.Close()

    ' REFRESCANDO DATASET con los nuevos datos de la tabla
    en disco

    canal=new OleDbDataAdapter("select * from mitabla",
    coneccion)

    ' creando el dataset y cargandolo

    tabla= new DataSet()

    canal.Fill(tabla, "mitabla")

    ' recargando el datagrid

    TABLAGRID.DataSource=tabla.Tables("mitabla").DefaultView

    TABLAGRID.DataBind()

    ' cargando otra vez la caja de CLAVE y limpiando las
    otras cajas

    DIM cren, nvaclave AS INTEGER

    cren = tabla.Tables("mitabla").Rows.Count

    nvaclave =tabla.Tables("mitabla").Rows(cren-1)(0)+
    1

    CLAVE.Text=nvaclave

    NOMBRE.Text=""

    EDAD.Text=""

    coneccion.Close()

    END SUB

    </script>

    corrida prog26.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    Notas:

    Se agregaron tres textboxs arriba del datagrid para
    capturar los nuevos datos a insertar en la tabla.

    En page_Load es el mismo código del programa
    anterior solo al final se usa el método row.count de
    dataset.tables[recuerdan la nota 8 del tema anterior] para
    conocer cuantos renglones tiene la tabla.

    Con esta información ya se puede leer la primera
    columna ( la cero 0 desde luego) para sacar el dato de la ultima
    clave.

    Luego se lee el ultimo renglón de la tabla con el
    método dataset.tables(tabla).rows(reng)(col).

    Es importante que se entienda que con este formato
    dataset.tables(tabla).rows(reng)(col) se puede leer o
    cargar(GET-SET)
    cualquier celda o columna de la
    tabla.

    Se descontó uno de la cantidad de renglones
    porque en tablas el primer renglón es
    el…

    El método devolvió el valor de la
    última clave que esta en el último renglón
    de la tabla, pero en string.

    Al final se incremento en uno la variable entera para
    obtener el valor de la nuevaclave o clavesiguiente, misma que se
    cargo en el textbox correspondiente.

    En función INSERTAR(), se crea la string q, con
    el formato apropiado sql( como se dijo al principio de este
    tema), observar que existen tres variables que llevan un @ antes,
    estas variables se llaman VARIABLES PARAMETROS, y se cargan con
    el objeto command.parameters().

    Otra vez, en este ejemplo para mandar la
    instrucción sql a la base de datos, se crea y se usa un
    objeto command (llamado orden) que lleva como datos la string q y
    la conexión, pero se agregan tres métodos
    command.parametro (orden.parameters()), en estos métodos
    se cargan las variables parámetro primero con el valor de
    dato del textbox asp y luego se transforman al tipo de dato
    apropiado usando los oledbtype(que hay que estudiar porque se
    tienen que asociar directamente a los tipos de datos
    que se usaron en access).

    Ya con el objeto COMMAND(orden) listo y cargado para
    comunicar la instrucción sql a la base de datos, se abre
    la conexión a la base de datos se manda el
    executenonquery(no se quiere regresar nada en esta parte,
    recordar la nota respectiva que se dio en un tema anterior) y se
    cierra la conexión y se mando el nuevo renglón a la
    base de datos en disco.

    Al final de esta función INSERTAR como ya se hizo
    un cambio en la
    base de datos, se tiene que volver a recargar el dataset con la
    nueva información(es el mismo código que se tiene
    en page_load) mas tantito código para limpiar y cargar los
    textboxs.

    SQL SELECT:
    BÚSQUEDA

    En este tema se analiza la búsqueda de un
    registro o
    renglón determinado en este proceso el usuario del
    programa quiere que se despliegue un y solo un registro de
    información proporcionando un dato de búsqueda
    generalmente la clave del registro.

    La solución es sencilla, solo usar otra vez la
    instrucción sql select con el siguiente
    formato:

    SELECT [ *, all, campos] FROM TABLA WHERE
    clave=claveabuscar;

    Código prog27.aspx

    <%@ PAGE LANGUAGE=VB%>

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <FORM RUNAT=SERVER>

    CLAVE A BUSCAR<ASP:TEXTBOX ID=CLAVE SIZE=3
    RUNAT=SERVER/>

    <ASP:BUTTON ONCLICK=BUSCAR TEXT=BUSCAR RUNAT=SERVER
    /><BR>

    <ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER

    Width=400

    BackColor=#ccccff

    BorderColor=black

    ShowFooter=false

    CellPadding=3

    CellSpacing=0

    Font-Name=Verdana

    Font-Size=8pt

    HeaderStyle-BackColor=#aaaadd

    EnableViewState=false

    /></FORM>

    <script runat=server>

    ' creando y cargando coneccion, adpater, dataset como
    variables globales

    DIM coneccion AS OLEDBCONNECTION

    DIM canal AS OLEDBDATAADAPTER

    DIM tabla AS DATASET

    SUB BUSCAR(Sender As Object, E As EventArgs)

    ' cargando conecion

    coneccion = NEW
    OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    ' reando y cargando canal con q y sus variables
    parametros apropiadas

    DIM q AS STRING

    q = "select * from mitabla where clave =
    @CLAVE"

    canal=new OleDbDataAdapter(q, coneccion)

    canal.SelectCommand.Parameters.Add(new
    OleDbParameter("@CLAVE", OleDbType.Integer))

    canal.SelectCommand.Parameters("@CLAVE").Value =
    CLAVE.Text

    ' cargando el dataset

    tabla = NEW DATASET()

    canal.FILL(tabla, "mitabla")

    ' cargando el datagrid

    TABLAGRID.DATASOURCE = tabla

    TABLAGRID.DATAMEMBER = "mitabla"

    TABLAGRID.DATABIND()

    ' cerrando conneccion recordar que FILL NO OCUPA
    CERRAR

    coneccion.CLOSE()

    END SUB

    </script>

    Notas:

    No hay nada nuevo es una combinación de los dos
    programas anteriores con las mismas notas, solo se usa un textbox
    asp para pedir la clave, aunque se puede usar cualquier campo
    para buscar.

    RECORDAR QUE TODO ESTE CAPITULO ES SIMPLEMENTES SQL y
    las instrucciones o se mandan vía el DATAADAPTER o se
    mandan vía el COMMAND, esto depende del problema a
    resolver.

    Corrida prog27.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú
    superior 

    SELECT
    WHERE: FILTROS SQL

    Otro problema similar al anterior es el de filtros es
    decir en muchas ocasiones es necesario obtener información
    acerca de un subconjunto de renglones de la tabla.

    Por ejemplo todos los estudiantes que sean mayores de 17
    años, todos los clientes que sean de Tijuana, etc., a esto
    le llamamos filtros o condiciones.

    También se resuelve de manera similar al
    anterior, es decir usando la instrucción select etc., from
    tabla, where CONDICION;

    Código prog28.aspx

    <%@ PAGE LANGUAGE=VB%>

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <FORM RUNAT=SERVER>

    EDAD >= QUE<ASP:TEXTBOX ID=EDAD SIZE=3
    RUNAT=SERVER/>

    <ASP:BUTTON ONCLICK=BUSCAR TEXT=BUSCAR RUNAT=SERVER
    /><BR>

    <ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER

    Width=400

    BackColor=#ccccff

    BorderColor=black

    ShowFooter=false

    CellPadding=3

    CellSpacing=0

    Font-Name=Verdana

    Font-Size=8pt

    HeaderStyle-BackColor=#aaaadd

    EnableViewState=false

    /></FORM>

    <script runat=server>

    ' creando y cargando coneccion, adpater, dataset como
    variables globales

    DIM coneccion AS OLEDBCONNECTION

    DIM canal AS OLEDBDATAADAPTER

    DIM tabla AS DATASET

    SUB BUSCAR(Sender As Object, E As EventArgs)

    ' cargando conecion

    coneccion = NEW
    OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    ' creando y cargando canal con q y sus variables
    parametros apropiadas

    DIM q AS STRING

    q = "select * from mitabla where edad >=
    @EDAD"

    canal=new OleDbDataAdapter(q, coneccion)

    canal.SelectCommand.Parameters.Add(new
    OleDbParameter("@EDAD", OleDbType.Integer))

    canal.SelectCommand.Parameters("@EDAD").Value =
    EDAD.Text

    ' cargando el dataset

    tabla = NEW DATASET()

    canal.FILL(tabla, "mitabla")

    ' cargando el datagrid

    TABLAGRID.DATASOURCE = tabla

    TABLAGRID.DATAMEMBER = "mitabla"

    TABLAGRID.DATABIND()

    ' cerrando conneccion recordar que FILL NO OCUPA
    CERRAR

    coneccion.CLOSE()

    END SUB

    </script>

    Nota: siguen siendo combinaciones de los programas
    anteriores pero seria prudente mejor usar dos combobox uno para
    la variable, otro para el operador relacional y un text para el
    dato y mandar estos tres datos al prog28.aspx (se ocupan varios
    command.parameters()), pero eso queda de tarea.

    Recordar también que bases de datos en microsoft
    net es solamente SQL SQL SQL y se han usado tres versiones de
    select, por ejemplo si se usa en un programa:

    SELECT column1, SUM(column2)
    FROM "list-of-tables"
    ORDER BY "column-list" [ASC | DESC];

    [ ] = optional

    Corrida prog28.aspx

     Para ver el
    gráfico seleccione la opción "Descargar" del
    menú superior 

    SQL
    UPPADTE: OPERACIONES CON CAMPOS

    Este es también un caso común con
    elementos de una tabla, sin embargo es también
    fácil de resolver.

    Es necesario recordar primero algunas cosas
    elementales:

    1.- Recordar que el numero de columna en una tabla
    empieza en 0, esto es que para realizar alguna operación
    por ejemplo la columna edad del ejemplo que estamos siguiendo, su
    numero de columna es la 2.

    2.- La operación que se plantee se puede realizar
    con todos los renglones de la tabla o con un solo renglón
    de la tabla(del dataset), para procesar todos los renglones se
    usa un ciclo for, si solo se quiere procesar un solo
    renglón o una celda o columna nada mas, solo recordar
    GET-SET y solo usar un tabla.tables.rows(r)(c) con los
    métodos strings apropiados.

    3.- Para realizar aritmética con toda una
    columna, solo usar el GET-SET de tabla.tables.rows(ren)(col) para
    leer(get)o cargar(set), en leer recordar que saldra una string y
    en cargar recordar que se tendrá que cargar también
    una string, otra vez;

    string alfa=tabla.Tables("Clientes").Rows(4)(5)
    –>carga como string la variable alfa con el dato que se tiene
    en la sexta columna del quinto renglón de la tabla
    clientes.

    tabla.Tables("alumnos").Rows(2)(3)="MAMA" –> carga
    con la string MAMA la cuarta columna del tercer rennglon de la
    tabla alumnos.

    5.- En el ejemplo se realiza la operación con
    todos los renglones de la tabla y no olvidar que se tiene que
    usar la instrucción sql Update
    para que la nueva
    información se actualice en disco, recordar que los
    cambios que se hacen a la tabla, es realmente al dataset, que a
    su vez es una tabla o base de datos en la memoria de la maquina
    del cliente o usuario, y estos cambios hay que actualizarlos o
    pasarlos o UPDATE a la base de datos en disco.

    El siguiente programa le aumenta 50 a todas las
    edades.

    Prog29.aspx

    <%@ PAGE LANGUAGE=VB%>

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <FORM RUNAT=SERVER>

    <ASP:BUTTON ONCLICK=SUMAR TEXT=EDAD+50 RUNAT=SERVER
    /><BR>

    <ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER

    Width=400

    BackColor=#ccccff

    BorderColor=black

    ShowFooter=false

    CellPadding=3

    CellSpacing=0

    Font-Name=Verdana

    Font-Size=8pt

    HeaderStyle-BackColor=#aaaadd

    EnableViewState=false

    /></FORM>

    <script runat=server>

    ' creando y cargando coneccion, adpater, dataset,
    command

    ' como variables globales

    DIM coneccion AS OLEDBCONNECTION

    DIM canal AS OLEDBDATAADAPTER

    DIM tabla AS DATASET

    DIM orden AS OLEDBCOMMAND

    SUB Page_Load(Sender As Object, E As
    EventArgs)

    ' enlazando coneccion a la base de datos

    coneccion = NEW
    OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    ' cargando el adapter con la instruccion sql

    canal = NEW OLEDBDATAADAPTER("select * from mitabla",
    coneccion)

    ' cargando el dataset

    tabla = NEW DATASET()

    canal.FILL(tabla, "mitabla")

    ' cargando el datagrid

    TABLAGRID.DATASOURCE = tabla

    TABLAGRID.DATAMEMBER = "mitabla"

    TABLAGRID.DATABIND()

    ' cerrando conneccion

    coneccion.CLOSE()

    END SUB

    SUB SUMAR(Sender As Object, E As EventArgs)

    ' variables a usar

    DIM q AS STRING

    DIM temp, r, cren, nvaclave AS INTEGER

    ' procesando el dataset

    cren = tabla.Tables("mitabla").Rows.Count

    FOR r = 0 TO cren-1

    ' cargando clave del renglon actual a procesar
    (get-set)

    nvaclave =tabla.Tables("mitabla").Rows(r)(0)

    ' pasando columna edad a variable temp
    (get-set)

    temp =tabla.Tables("mitabla").Rows(r)(2)

    'sumando 50 a la edad(temp)

    temp = temp + 50

    ' cargando la nueva edad en el dataset
    (get-set)

    tabla.Tables("mitabla").Rows(r)(2)= temp

    ' pasando dataset a disco con update

    q = "UPDATE mitabla SET edad =
    "&temp.ToString()&" where clave=
    "&nvaclave.ToString()

    orden = new OleDbCommand(q, coneccion)

    orden.Connection.Open()

    orden.ExecuteNonQuery()

    orden.Connection.Close()

    'termina for y empieza nuevo renglon

    NEXT R

    'refrescando el datagrid

    TABLAGRID.DataSource = tabla

    TABLAGRID.DataMember= "mitabla"

    TABLAGRID.DataBind()

    END SUB

    </script>

    nota: como se observa se puede construir directamente la
    string q, y no usar command.parameters(), si se esta muy seguro que los
    tipos de datos que se mandan a disco son los apropiados para
    access.

    Corrida prog29.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    SQL
    DELETE: BAJA O ELIMINACION

    Eliminación es otro proceso simple y común
    con las bases de datos el modelo con ADO.NET que estamos usando
    hace este tipo de operaciones muy fáciles:

    La instrucción sql a usar es: DELETE FROM TABLA
    WHERE CONDICION

    Prog30.aspx

    <%@ PAGE LANGUAGE=VB %>

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <FORM RUNAT=SERVER>

    CLAVE A BORRAR<ASP:TEXTBOX ID=CLAVE SIZE=3
    RUNAT=SERVER/>

    <ASP:BUTTON ONCLICK=BORRAR TEXT=BORRAR RUNAT=SERVER
    /><BR>

    <ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER

    Width=400

    BackColor=#ccccff

    BorderColor=black

    ShowFooter=false

    CellPadding=3

    CellSpacing=0

    Font-Name=Verdana

    Font-Size=8pt

    HeaderStyle-BackColor=#aaaadd

    EnableViewState=false />

    </FORM>

    <script runat=server>

    DIM coneccion AS OleDbConnection

    DIM tabla AS DataSet

    DIM canal AS OleDbDataAdapter

    DIM orden AS OleDbCommand

    SUB Page_Load(Sender as Object, E as EventArgs
    )

    coneccion = new
    OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    canal = new OleDbDataAdapter("select * from mitabla",
    coneccion)

    tabla = new DataSet()

    canal.Fill(tabla, "mitabla")

    TABLAGRID.DataSource = tabla

    TABLAGRID.DataMember = "mitabla"

    TABLAGRID.DataBind()

    END SUB

    SUB BORRAR (Sender as Object, E as EventArgs)

    DIM q AS STRING

    ' instruccion sql DELETE FROM TABLA WHERE
    CLAVE=DATO

    q = "delete from mitabla where clave=@CLAVE"

    orden= new OleDbCommand(q, coneccion)

    orden.Parameters.Add(new OleDbParameter("@CLAVE",
    OleDbType.Integer))

    orden.Parameters("@CLAVE").Value = CLAVE.Text

    orden.Connection.Open()

    orden.ExecuteNonQuery()

    orden.Connection.Close()

    ' REFRESCANDO DATASET

    canal = new OleDbDataAdapter("select * from mitabla",
    coneccion)

    tabla = new DataSet()

    canal.Fill(tabla, "mitabla")

    TABLAGRID.DataSource=tabla.Tables("mitabla").DefaultView

    TABLAGRID.DataBind()

    CLAVE.Text=""

    END SUB

    </script>

    corrida prog30.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    CUIDAR Y MEJOR VALIDEN EN PROGRAMA QUE LA CLAVE A BORRAR
    EXISTA EN EL DATASET O TENDRAN UN ERROR DE SQL Y MAS IMPORTANTE
    AUN SE TENDRA QUE RESETEAR EL SERVIDOR, ESTO LO NOTARAN CUANDO
    ENCUENTREN CON EL FTP UN ARCHIVO EN SU
    DIRECTORIO LLAMADO MIBASE.LDB QUE NO LO PODRAN ELIMINAR HASTA QUE
    YO RESETEE EL SERVIDOR ESTAN AVISADOS.

    SQL
    UPDATE: EDICIÓN DE REGISTROS

    Editar registros significa cambiar el contenido de
    algunos de los campos o columnas por nueva información o
    para corregir algún error de captura original o para
    agregar alguna columna que no existía por
    modificación de la tabla o la base de datos.

    En general se tiene otro problema de sql UPDATE, sin
    embargo ahora se aprovechan algunos elementos nuevos del objeto
    datagrid, como son la capacidad que tiene de crearle columnas de
    edición
    a los renglones que muestra el
    dataset, estas columnas de edición traen sus propios
    métodos, mismos que se pueden cargar con código
    para procesar.

    Prog31.aspx

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <HTML>

    <script language=VB runat=server>

    DIM coneccion As OleDbConnection=new
    OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    SUB Page_Load(Sender as Object, E as
    EventArgs)

    ' solo para cuando se carga por primera vez la
    forma

    if NOT IsPostBack Then

    DespTabla()

    end if

    END SUB

    SUB DespTabla()

    DIM canal as OleDbDataAdapter

    canal = new OleDbDataAdapter("select * from mitabla",
    coneccion)

    DIM tabla as DataSet

    tabla = new DataSet()

    canal.Fill(tabla, "mitabla")

    TABLAGRID.DataSource=tabla

    TABLAGRID.DataMember="mitabla"

    TABLAGRID.DataBind()

    END SUB

     SUB DataGrid_Edit(Sender as Object, E as
    DataGridCommandEventArgs)

    ' cargando el renglon donde se pidio la
    edicion

    TABLAGRID.EditItemIndex = E.Item.ItemIndex

    DespTabla()

    END SUB

     SUB DataGrid_Cancel(Sender as Object, E as
    DataGridCommandEventArgs)

    'para cancelar solo poner edititemindex en -1 (ningun
    renglon)

    TABLAGRID.EditItemIndex = -1

    DespTabla()

    END SUB

     SUB DataGrid_Update(Sender as Object, E as
    DataGridCommandEventArgs)

    DIM q AS STRING

    q = "UPDATE mitabla SET clave= @CLAVE, nombre= @NOMBRE,
    edad = @EDAD where clave= @CLAVE"

    DIM orden AS OleDbCommand

    orden = new OleDbCommand(q, coneccion)

    orden.Parameters.Add(new OleDbParameter("@CLAVE",
    OleDbType.Integer))

    orden.Parameters.Add(new OleDbParameter("@NOMBRE",
    OleDbType.VarWChar, 20))

    orden.Parameters.Add(new OleDbParameter("@EDAD",
    OleDbType.Integer))

    ' cargando textbox de clave con el valor de la
    clave

    orden.Parameters("@CLAVE").Value =
    TABLAGRID.DataKeys(E.Item.ItemIndex)

    ' creando y cargando los demas textboxs

    DIM nomcajas()= {"@CLAVE","@NOMBRE","@EDAD"}

    DIM i AS Integer

    FOR i=1 to 3

    DIM datocajas AS STRING

    Dim micaja As TextBox

    micaja = CType(E.Item.Cells(I).Controls(0),
    TextBox)

    datocajas = micaja.Text

    orden.Parameters(nomcajas(i-1)).Value =
    Server.HtmlEncode(datocajas)

    NEXT i

    orden.Connection.Open()

    orden.ExecuteNonQuery()

    'poniendo otra vez el datagrid en nada

    TABLAGRID.EditItemIndex = -1

    orden.Connection.Close()

    DespTabla()

    END SUB

    </script>

    <body style="font: 10pt verdana">

    <form runat="server">

    <h3><font face="Verdana">EDICION O
    ACTUALIZACION DE REGISTROS</font></h3>

    <span id="Message" EnableViewState="false"
    style="font: arial 11pt;" runat="server"/><p>

    <ASP:DataGrid id="TABLAGRID"
    runat="server"

    Width="400"

    BackColor="#ccccff"

    BorderColor="black"

    ShowFooter="false"

    CellPadding=3

    CellSpacing="0"

    Font-Name="Verdana"

    Font-Size="8pt"

    HeaderStyle-BackColor="#aaaadd"

    OnEditCommand="DataGrid_Edit"

    OnCancelCommand="DataGrid_Cancel"

    OnUpdateCommand="DataGrid_Update"

    DataKeyField="clave"

    >

    <Columns>

    <asp:EditCommandColumn EditText="Edit"
    CancelText="Cancel" UpdateText="Update"
    ItemStyle-Wrap="false"/>

    </Columns>

    </ASP:DataGrid>

    </form>

    </body>

    </html>

    Para entender el código veamos la corrida
    completa:

    Pantalla uno prog31.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    Observar que ahora el datagrid incluye una columna de
    edición especial, revisar la parte del código de
    propiedades del datagrid en el programa y las nuevas propiedades
    que se le agregaron.

    Pantalla dos prog31.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    Observar que la columna de edición del
    renglón seleccionado (clic en edit de cualquier
    renglón) ahora tiene dos opciones (update y cancel) y el
    renglón de edición se convirtió en puros
    textbox (ya se modificaron algunos valores),
    update y cancel tienen su propio código en el programa,
    revisarlo y usando opción update se tiene
    ahora;

    Pantalla tres prog31.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    Un registro editado o modificado en visual basic net ,
    analizar con cuidado el codigo del
    programa, que esta documentado, suerte

    GRAFICOS SQL SELECT

    Campos de gráficos o de imágenes,
    se han convertido en elementos importantes de cualquier base de
    datos.

    Para manejar este elemento con ado asp net existen dos
    maneras:

    1.- Agregar un campo BLOB a la tabla en microsoft
    access y usar componentes asp net especializados en
    imágenes tanto para subirlas como para desplegar la
    imagen.

    Este método provoca que la base de datos crezca
    mucho recordar que una imagen aun de tipo jpg ocupa mucho
    espacio.

    2.- El segundo método es mas sencillo, primero
    subir las imágenes ( de preferencia jpg ) con un ftp
    normal a tusitio y después agregar un objeto asp net
    imageurl en el programa y además agregar un campo de
    texto llamado
    fotourl o foto a la tabla en microsoft access y grabar la
    dirección http de la imagen
    en este campo, por ejemplo
    http://programacionfacil.com/tusitio/pato.jpg aunque si estan
    juntos el aspx y el jpg se puede usar solo pato.jpg
    directamente.

    Después solo cargar este objeto asp net imageurl
    en la pagina que se construirá que no es otra cosa que el
    programa de búsqueda con el despliegue del campo extra,
    como lo muestra el programa ejemplo.

    Prog32.aspx

    <%@ PAGE LANGUAGE=VB %>

    <%@ Import Namespace="System" %>

    <%@ Import Namespace="System.Data" %>

    <%@ Import Namespace="System.Data.OleDb"
    %>

    <FORM RUNAT=SERVER>

    CLAVE A BUSCAR<ASP:TEXTBOX ID=CLAVE SIZE=3
    RUNAT=SERVER/>

    <ASP:BUTTON ONCLICK=BUSCAR TEXT=BUSCAR RUNAT=SERVER
    /><BR>

    <ASP:IMAGE ID=FOTO IMAGEURL=" "
    RUNAT=SERVER/>

    <ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER

    Width=400

    BackColor=#ccccff

    BorderColor=black

    ShowFooter=false

    CellPadding=3

    CellSpacing=0

    Font-Name=Verdana

    Font-Size=8pt

    HeaderStyle-BackColor=#aaaadd

    EnableViewState=false

    />

    </FORM>

    <html>

    <script runat=server>

    'creando y cargando la coneccion a la base de datos
    variable global

    DIM coneccion AS OleDbConnection=new
    OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=c:progfaciltusitiomibase.mdb")

    SUB BUSCAR (Sender As Object,E as EventArgs)

    DIM q AS String

    q = "select * from mitabla where clave =
    @CLAVE"

    DIM canal as OleDbDataAdapter = new OleDbDataAdapter(q,
    coneccion)

    canal.SelectCommand.Parameters.Add(new
    OleDbParameter("@CLAVE", OleDbType.Integer))

    canal.SelectCommand.Parameters("@CLAVE").Value =
    CLAVE.Text

    DIM tabla as DataSet = new DataSet()

    canal.Fill(tabla, "mitabla")

    TABLAGRID.DataSource=tabla

    TABLAGRID.DataMember="mitabla"

    TABLAGRID.DataBind()

    'cargando el objeto imageurl

    FOTO.ImageUrl=tabla.Tables("mitabla").Rows(0)(3).ToString()

    END SUB

    </script>

    </html>

    corrida: prog32.aspx

    Para ver el gráfico seleccione la
    opción "Descargar" del menú
    superior

    Recordar que para que no salga el campo fotourl en el
    datagrid el select de sql puede pedirse como select campo1,
    campo2, campo.. from mitabla etcétera.

    Y el objeto IMAGE de visual basic net tiene muchas
    propiedades usenlas. 

    GLORIA ALVITES

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter