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

[0] Índice de Mensajes

Ir a la versión completa