CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Ayyuda ! Problema con base de datos
(1/1)
Juan Carlos Puente:
El error que me da es el de "el numero de valores de consulta y el numero de campos de destino son diferentes"
ya cheque y segun yo son 8 datos los que pide y en la tabla tambien son 8 datos aqui esta mi codigo si me pueden ayudar se los agradeceria:
--- Código: Visual Basic ---Imports System.Data.OleDbImports System.IO Public Class Form1 Private conex As New OleDbConnection Private Sub conexion() conex.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Basedatosproyecto.mdb" conex.Open() End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load conexion() picFoto.SizeMode = PictureBoxSizeMode.StretchImage End Sub Private Sub exam_Click(ByVal sender As Object, ByVal e As EventArgs) Handles exam.Click Dim ofd As New OpenFileDialog ofd.Filter = "Imagenes JPG|*.jpg" If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then picFoto.Image = Image.FromFile(ofd.FileName) End If End Sub Private Sub guar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles guar.Click Try Dim ms As New MemoryStream picFoto.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) Dim pic As Byte() = ms.GetBuffer If TextBox1.Text <> "" And pic.Length > 0 Then Dim cmd As New OleDbCommand("insert into Alumnos values(@nom,@con,@sem,@esp,@apro,@curs,@prom,@pic)", conex) cmd.Parameters.Add(New OleDbParameter("@nom", TextBox1.Text)) cmd.Parameters.Add(New OleDbParameter("@con", TextBox3.Text)) cmd.Parameters.Add(New OleDbParameter("@sem", TextBox2.Text)) cmd.Parameters.Add(New OleDbParameter("@esp", TextBox4.Text)) cmd.Parameters.Add(New OleDbParameter("@apro", TextBox5.Text)) cmd.Parameters.Add(New OleDbParameter("@curs", TextBox6.Text)) cmd.Parameters.Add(New OleDbParameter("@prom", TextBox7.Text)) cmd.Parameters.Add(New OleDbParameter("@pic", pic)) cmd.ExecuteNonQuery() MsgBox("Los registros se han almacenado satisfactoriamente") Else MsgBox("Debe agregar todos los datos") End If Catch ex As Exception MsgBox(ex.Message) End Try End SubEnd Class
Haggen:
Pues esta raro, no probé tu código, pero te paso este, yo lo uso en mis proyectos y no me ha dado ningún problema (necesitas obviamente abrir tu conexión antes de correr el sql):
--- Código: --- Private conn As OleDbConnection
Private com As OleDbCommand
'#### Purpose: Return the db connection
'#### Created date: 26/01/2012
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 27/01/2015
'#### Last modified username: Juan Manuel Mar Hdz.
Public Function getConnection() As OleDbConnection
If IsNothing(conn) = True Then
Return Nothing
Else
Return conn
End If
End Function
'#### Purpose: Execute sql string
'#### Created date: 11/02/2014
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 10/02/2016
'#### Last modified username: Juan Manuel Mar Hdz.
Public Function runsql(SQL As String, Optional secondstimeout As Long = -1) As Boolean
Try
If IsNothing(com) = True Then
com = New OleDbCommand
com.Connection = getConnection
End If
If secondstimeout >= 0 Then
com.CommandTimeout = secondstimeout
End If
com.CommandText = SQL.Trim
com.ExecuteNonQuery()
Return True
Catch exp As Exception
Return False
End Try
End Function
--- Fin del código ---
DiabloRojo:
Hola, ya encontraste la solución a tú problema?
Si no recuerdo mal (hace un motón que no programo) en tu consulta insert debes indicar los campos de la tabla que deseas ingresar. No lo indicas, pero casi seguro que tienes un campo numérico autogenerado como id.
Saludos,
Navegación
Ir a la versión completa