none
Como puedo hacer y actualizar una base de datos AUTOMATICAMENTE desde un programa?

    Question

  • Hola todos
    Un problema más que tengo espero alguien pueda decirme como debo resolverlo:

    Tengo una base de datos llamada Chizpa1.mdf y una tabla llamada Chizpa con 4 columnas llamadas:

    Orden, Dig_1,Dig_2 y Dig_3. Lo que deseo hacer es llenar la base de datos con un programa y quiero que se haga sola poniendo en la Col. Orden números del 1 al final que debe de ser 3276 y en las Cols. Dig_1, Dig_2 y Dig_3 irían los números generados por el mismo programa.

    Para explicarme mejor tengo los números generados por el programa llamados Num1 para Dig_1, Num2 para Dig_2, Num3 para Dig_3 y Num para Orden (Creo que este último se pone automáticamente). Quiero que esta serie de números queden grabados en la base de datos se que podría hacerlo manual pero son 3276 combinaciones de este tipo:Orden     Dig_1    Dig_2   Dig_3


    Mi idea con esto es tener todas las combinaciones posibles de números entre el 1 y el 28 de tres en tres, Ejemplo:

    1              1            2         3

    2              1            2         4

    3              1            2         5

    .               .            .           .       ETC.

    Hasta


    3275       25           27       28
    3276       26           27       28

    La base de datos la generé desde el mismo programa y se llama Chizpa1.mfd


     

    Este es el codigo para generar las combinaciones:

    Private
    Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Gracias espero haberme explicado bien.

    Num = 1

    A1 = 1

    A2 = 2

    A3 = 3

    Comi:

    Num1 = A1

    Num2 = A2

    Num3 = A3
    ' PONER AQUI LA ACTUALIZACION DE LA BASE DE DATOS Dig_1 = Num1 ETC.

     

    If A3 < 28 Then

    A3 = A3 + 1

    Num = Num + 1

    GoTo Comi

    End If

    If A3 = 28 Then

    If A2 = 27 Then

    If A1 = 26 Then GoTo Final

    End If

    End If

    If A3 = 28 Then

    If A2 < 27 Then

    A2 = A2 + 1

    A3 = A2 + 1

    Num = Num + 1

    GoTo Comi

    End If

    If A2 = 27 Then

    If A1 < 26 Then

    A1 = A1 + 1

    A2 = A1 + 1

    A3 = A2 + 1

    Num = Num + 1

    GoTo Comi

    End If

    End If

    End If

    Final:

     

    End Sub

    Ignacio Vargas

    End Sub

     

    • Edited by Ignacio Vargas Monday, November 30, 2009 3:27 PM Apliar pregunta
    Monday, November 30, 2009 3:08 PM

Answers

  • Como te conectas a la Base de Datos?
    Mi Blog: Jtorrecilla
    • Marked as answer by Ignacio Vargas Wednesday, December 02, 2009 12:22 AM
    Monday, November 30, 2009 3:15 PM
  • hola

    la pregunta de jtorrecilla es importante, ya que existen diferentes metodos para conectarte y tratar la informacion desde codigo
    - podrias suar los objetos de ado.net
    - o los componentes que conexion que estan en la toolbox, del VS
    - o por ahi un dataset tipado, con su respectivo table adapter

    por lo pronto puedo pasarte algo de info para que puedas ir estudiando las tecnicas

    si quieres utilizar ado.net



    si bien la explicación de los link se basa en un ejemplo en c# es muy simple entenderlo, y ademas al final tienes ejemplos para poder descargar

    tambien podrias ver algo de dataset tipados


    bien de este material podrías seleccionar que técnica utilizar para realizar las actualizaciones a la db

    - otra consulta intersante seria si tienes experiencia en utilziar sql server?
    y si has realizado consulta sql para recuperar información de la db ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Ignacio Vargas Wednesday, December 02, 2009 12:23 AM
    Tuesday, December 01, 2009 3:43 AM
  • Como bien han dicho los compañeros depende de la forma que utilices para conectarte a tu bbdd. Suponiendo que utilices un fichero de sql server *.mdf aquí te dejo una posible solución:

    Imports

    System.Data.SqlClient

    Public

    Class Form1

    Private conexion As New SqlConnection

    Private Sub btn_insertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_insertar.Click

    Dim i As Integer = 1

    Dim dig_1 As Integer = 1

    Dim dig_2 As Integer = 1

    Dim dig_3 As Integer = 1

    For i = 1 To 3276

    If dig_2 > 27 Then

    dig_1 += 1

    dig_2 = 1

    End If

    If dig_3 > 28 Then

    dig_2 += 1

    dig_3 = 1

    End If

    Dim sql_insertar As String = String.Format("Insert into chizpa (orden,dig_1,dig_2,dig_3) values ('{0}','{1}','{2}','{3}')", i, dig_1, dig_2, dig_3)

    Dim comando_insertar As New SqlCommand(sql_insertar, conexion)

    conexion.Open()

    comando_insertar.ExecuteNonQuery()

    conexion.Close()

    dig_3 += 1

    MessageBox.Show("Proceso finalizado.", "Atenci¢n", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Next

    End Sub

    Public Sub New()

    ' Llamada necesaria para el Dise¤ador de Windows Forms.

    InitializeComponent()

    ' Agregue cualquier inicializaci¢n despu‚s de la llamada a InitializeComponent().
    'RECUERDA CAMBIAR ESTA CADENA DE CONEXION POR LA CADENA DE CONEXIÓN ADECUADA PARA TU PROGRAMA

    conexion.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Documents and Settings\GREEN\Escritorio\chizpa\chizpa\chizpa.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True"

    End Sub

    End

    Class

    Salu2
    Si la respuesta te sirvió de ayuda recuerda marcarla como correcta.


    nunca te acostarás sin saber una cosa más
    • Marked as answer by Ignacio Vargas Wednesday, December 02, 2009 12:23 AM
    Tuesday, December 01, 2009 6:02 AM

All replies

  • Como te conectas a la Base de Datos?
    Mi Blog: Jtorrecilla
    • Marked as answer by Ignacio Vargas Wednesday, December 02, 2009 12:22 AM
    Monday, November 30, 2009 3:15 PM
  • hola

    la pregunta de jtorrecilla es importante, ya que existen diferentes metodos para conectarte y tratar la informacion desde codigo
    - podrias suar los objetos de ado.net
    - o los componentes que conexion que estan en la toolbox, del VS
    - o por ahi un dataset tipado, con su respectivo table adapter

    por lo pronto puedo pasarte algo de info para que puedas ir estudiando las tecnicas

    si quieres utilizar ado.net



    si bien la explicación de los link se basa en un ejemplo en c# es muy simple entenderlo, y ademas al final tienes ejemplos para poder descargar

    tambien podrias ver algo de dataset tipados


    bien de este material podrías seleccionar que técnica utilizar para realizar las actualizaciones a la db

    - otra consulta intersante seria si tienes experiencia en utilziar sql server?
    y si has realizado consulta sql para recuperar información de la db ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Ignacio Vargas Wednesday, December 02, 2009 12:23 AM
    Tuesday, December 01, 2009 3:43 AM
  • Como bien han dicho los compañeros depende de la forma que utilices para conectarte a tu bbdd. Suponiendo que utilices un fichero de sql server *.mdf aquí te dejo una posible solución:

    Imports

    System.Data.SqlClient

    Public

    Class Form1

    Private conexion As New SqlConnection

    Private Sub btn_insertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_insertar.Click

    Dim i As Integer = 1

    Dim dig_1 As Integer = 1

    Dim dig_2 As Integer = 1

    Dim dig_3 As Integer = 1

    For i = 1 To 3276

    If dig_2 > 27 Then

    dig_1 += 1

    dig_2 = 1

    End If

    If dig_3 > 28 Then

    dig_2 += 1

    dig_3 = 1

    End If

    Dim sql_insertar As String = String.Format("Insert into chizpa (orden,dig_1,dig_2,dig_3) values ('{0}','{1}','{2}','{3}')", i, dig_1, dig_2, dig_3)

    Dim comando_insertar As New SqlCommand(sql_insertar, conexion)

    conexion.Open()

    comando_insertar.ExecuteNonQuery()

    conexion.Close()

    dig_3 += 1

    MessageBox.Show("Proceso finalizado.", "Atenci¢n", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Next

    End Sub

    Public Sub New()

    ' Llamada necesaria para el Dise¤ador de Windows Forms.

    InitializeComponent()

    ' Agregue cualquier inicializaci¢n despu‚s de la llamada a InitializeComponent().
    'RECUERDA CAMBIAR ESTA CADENA DE CONEXION POR LA CADENA DE CONEXIÓN ADECUADA PARA TU PROGRAMA

    conexion.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Documents and Settings\GREEN\Escritorio\chizpa\chizpa\chizpa.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True"

    End Sub

    End

    Class

    Salu2
    Si la respuesta te sirvió de ayuda recuerda marcarla como correcta.


    nunca te acostarás sin saber una cosa más
    • Marked as answer by Ignacio Vargas Wednesday, December 02, 2009 12:23 AM
    Tuesday, December 01, 2009 6:02 AM
  • Hola a todos

    Gracias a:

    Jtorrecilla a Leandro Tuttini a Barbaroja y a todos Uds. Por su interés en ayudarme con este pequeño problema.

    Lo solucioné poniendo en la línea que quería esto:

    Chi123TableAdapter.Insert(Num1, Num2, Num3, 0)  ‘en donde (Dig_1, Dig_2, Dig_3, Dig_4)

    Realmente esto fué sencillo pero sigo teniendo problemas ya que como se pueden dar cuenta no se casi nada o mejor dicho nada de programcion y mucho menos en VB.Net.

    De esta manera que pude insertar mis variables Num1,Num2,Num3 y 0 quiero ahora poder leerlos el 0 espara modificrlo cuando use esa combinacion pienso poner un 1 en lugar de 0 y así de esa manera el programa ya sabrá que esa combinacion ya fue usada y la descarta asi:

    If Dig_4 = 0 then

    ‘Hacer - XXXXXX

    Else

    Goto CheckOtro:

    End if

    Antes que hacer esto debo checar de la misma manera otra Tabla con otra informacion.

    No tengo ni idea de cómo hacerlo pero sé que lo haré con la ayuda de ustedes.

    Gracias

    Ignacio Vargas

    Wednesday, December 02, 2009 12:24 AM
  • hola

    bien veo que has optado por hacer uso de dataset tipado con sus tablaadapter

    en el caso de la actualziacion si te guias de este ejemplo

    veras que basicamente lo que hace es crear un nuevo metodo en el tableadapter, y utilziar una query de INSERT
    esto lo veras en el subtitulo "Tutorial 5: Using Insert, Update, and Delete DBDirect Commands on TableAdapters"

    pero ojo que en tu caso no sera un insert lo que harias sino que sera un UPDATE

    la instruccion bascamente seria

    UPDATE <table> SET
       campo1 = param1,
       campo2 = param2
    WHERE campo = param

    es importante la parte del WHERE ya que esta es la que filtrara por el cero que comentas y actualizar ese registro únicamente

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, December 02, 2009 4:09 AM