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