sábado, 9 de agosto de 2014

Datatable en C# y Vb.net














Datatable en C# y Vb.net
Por. Diógenes Amaury MS

En el día de hoy estuvimos viendo en la universidad donde imparto docencia el tema de los datatables, paradójícamente por cuestiones inexplicable no pude completar de forma satisfactoria la explicación de este importante tema, es por ello, que voy aprovechar para hacerlo desde este blog y contribuir de esta manera con mis estudiantes y con las personas interesada con el tema que visitan este blog.

Iniciemos por definir primero datatatable y SqlDataAdapter:
Datatable:
Este objeto nos permite representar una determinada tabla en memoria, de modo que podamos interactuar con ella.


SqlDataAdapter:

Representa un conjunto de comandos de datos y una conexión de base de datos que se utilizan para rellenar un DataSet y actualizar una base de datos de SQL Server. Esta clase no puede heredarse.

La idea es  crear un  clase que tenga 2 metodos una para determinar la secuencia de la tabla clientes, y otro para guardar registro en dicha tabla.

Lo primero que debemos hacer es crear una clase, en dicha clase debemos especificar los proveedores de datos en nuestra clase.

En vb.net

Imports System.Data
Imports System.Data.SqlClient

En c#
using System.Data;
using System.Data.SqlClient;


Dentro de la clase creamos la variable para almacenar la conexión a la base de datos.
En vb.net
Public conn As New SqlConnection("Server=pc_1\SQLEXPRESS;Database=Ventas;Trusted_Connection=True;")

En C#
SqlConnection conn = new SqlConnection(@"Server=pc_1\SQLEXPRESS;Database=Ventas;Trusted_Connection=True;");

Ahora creamos el método secuencia, el cual tendrá como función principal el de obtener la secuencia de la tabla clientes.


En vb.net
 Public Function secuencia(strSql As String) As Long
        Dim numero As Long
        Dim dt As New DataTable
        Dim da As New SqlDataAdapter(strSql, conn)
        da.Fill(dt)
        If dt.Rows.Count > 0 Then
            numero = Val(dt.Rows(0).Item("secuencia").ToString) + 1
        Else
            numero = 1
        End If
          Return numero
    End Function

En C#

       public int Secuencia(string strSql)
        {
            int numero =0;
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                numero = Convert.ToInt32( dt.Rows[0]["secuencia"] ) + 1;
            }
            return numero;
        }


En el momento en que intentamos obtener la secuencia en C# fue donde presentamos el inconveniente, ya que teníamos que convertilo a int32 .
 dt.Rows[0]["secuencia"] de esta forma mostramos el contenido del campo, pero el valor que devuelve es un entero de 32, razón que provocaba un error!!!.

llamando la clase desde el formulario y utilizando el método:
En vb.net
 Dim registro As New claGobal
 txtCodigo.Text = registro.secuencia("select max(codcli) as secuencia from clientes")


En C#
cla_global registro = new cla_global();
txtCodigo.Text =Convert.ToString(registro.Secuencia("SELECT MAX(CODCLI) AS secuencia FROM CLIENTES")); 







No hay comentarios:

Publicar un comentario