Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Insertar registro en base de datos.

Estas en el tema de Insertar registro en base de datos. en el foro de Visual Basic clásico en Foros del Web. Hola buenas. Estoy haciendo mis pinitos con visual Basic 2005 y la parte de bases de datos parece que me está costando un poco así ...
  #1 (permalink)  
Antiguo 24/04/2007, 14:05
 
Fecha de Ingreso: abril-2006
Ubicación: De vuelta en Asturias
Mensajes: 209
Antigüedad: 18 años
Puntos: 1
Insertar registro en base de datos.

Hola buenas.

Estoy haciendo mis pinitos con visual Basic 2005 y la parte de bases de datos parece que me está costando un poco así que he pensado pedir ayuda en vista de que no encuentro la respuesta yo sola.

Verán, el otro día estuve probando a hacer un programita que insertaba en una base de datos un nombre y una descripción. Además en la base de datos existe un campo autonumérico.
En el formulario, en tiempo de diseño inserté los controles de la conexión, el dataset, el comando y el dataadapter.
A la hora de ejecutar hacía una búsqueda para ver que dicho nombre no existiera y si no existía insertaba mediante este código:

Código:
                Dim MiFila As DataRow
                MiFila = DataSet1.Tables(0).NewRow()
                MiFila("nombre") = txt_nombre.Text
                MiFila("descripcion") = txt_descrip.Text
                DataSet1.Tables(0).Rows.Add(MiFila)
                If DataSet1.HasChanges Then
                    SqlCommand1.CommandText = "insert into categoria(nombre,descripcion)values(@nombre,@descripcion)"
                    SqlCommand1.Connection = SqlConnection1
                    SqlDataAdapter1.InsertCommand = SqlCommand1
                    SqlCommand1.Parameters.Add("@nombre", Data.SqlDbType.NChar, 50, "nombre")
                    SqlCommand1.Parameters.Add("@descripcion", Data.SqlDbType.NText, 250, "descripcion")
                    SqlConnection1.Open()
                    SqlDataAdapter1.Update(DataSet1)
                    SqlConnection1.Close()
Funciona perfectamente.

Ahora me puse con otro que ingresa una serie de datos más, unos provenientes de cajas de textos, otros de listbox y otros de variables. Y también tiene su campo autonumérico.
Simplemente, en el código, compruebo que aquellos datos que son obligatorios se hayan completado. Luego ejecuto esto:

Código:
Dim MiFila As DataRow
        MiFila = Dset_insertar.Tables(0).NewRow
        MiFila("plato") = txt_plato.Text
        MiFila("foto") = txt_foto.Text
        MiFila("tipo") = lst_tipo.SelectedValue
        MiFila("venta") = venta
        MiFila("raciones") = lst_racion.SelectedValue
        MiFila("presentacion") = presentacion
        MiFila("minimo") = txt_minimo.Text
        MiFila("tamannos") = tamanno
        MiFila("comentarios") = txt_comentarios.Text
        Dset_insertar.Tables(0).Rows.Add(MiFila)
        If Dset_insertar.HasChanges Then
            Com_insertar.CommandText = "insert into platos (plato, foto, tipo, venta, raciones, presentacion, minimo, tamannos, comentarios) values (@plato, @foto, @tipo, @venta, @raciones, @presentacion, @minimo, @tammanos, @comentarios)"
            Com_insertar.Connection = SqlConnection1
            Adap_insertar.InsertCommand = Com_insertar
            Com_insertar.Parameters.Add("@plato", SqlDbType.NChar, 75, "plato")
            Com_insertar.Parameters.Add("@foto", SqlDbType.NChar, 255, "foto")
            Com_insertar.Parameters.Add("@tipo", SqlDbType.NChar, 15, "tipo")
            Com_insertar.Parameters.Add("@venta", SqlDbType.NChar, 15, "venta")
            Com_insertar.Parameters.Add("@raciones", SqlDbType.Int, 4, "raciones")
            Com_insertar.Parameters.Add("@presentacion", SqlDbType.NChar, 15, "presentacion")
            Com_insertar.Parameters.Add("@minimo", SqlDbType.Int, 4, "minimo")
            Com_insertar.Parameters.Add("@tamannos", SqlDbType.NChar, 50, "tamannos")
            Com_insertar.Parameters.Add("@comentarios", SqlDbType.NVarChar, -1, "comentarios")
            SqlConnection1.Open()
            Adap_insertar.Update(Dset_insertar)
            SqlConnection1.Close()
Igual que antes, los controles se encuentran en el formulario en tiempo de diseño, la conexión está bien pues la utilizo al principio para llenar las listas... pero no funciona
Yo lo miro y lo remiro y lo veo exactamente igual que el otro que funcionaba salvo por la cantidad de campos, pero esta vez no funciona.

El primer error me lo da justo cuando empiezan la asignación de valores, pues me dice que "plato" no es un campo de table1.
He probado a crear la columna: Dset_insertar.Tables(0).Columns.Add("plato") (obviamente igual para todas las columnas) y entonces rula, pero cuando llego a: Adap_insertar.update, me dice: Update no puede encontrar TableMapping['Table'] o DataTable 'Table'.

Si escribo Adap_insertar.update(Dset_insertar, 0) cambia 'Table' por '0', si escribo el nombre de mi tabla 'platos' me dice esa. pero siempre sale ese error.

Ya no sé que hacer. La verdad que recién estoy aprendiendo. Encontré un manual por internet que es con el que estaba guiando pero me siento totalmente perdida pues se me hace muy raro que códigos tan parecidos uno funcione y otro no.
Estoy segura que estoy obcecada en algo que tengo delante de mis narices y no lo veo, pero no consigo pasar de ahi.
Si alguien me puede ayudar, por favor...
Gracias de antemano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:13.