SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: Juan Carlos Puente en Viernes 8 de Julio de 2016, 02:59

Título: Ayyuda ! Problema con base de datos
Publicado por: Juan Carlos Puente en Viernes 8 de Julio de 2016, 02:59
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
  1. Imports System.Data.OleDb
  2. Imports System.IO
  3.  
  4. Public Class Form1
  5.     Private conex As New OleDbConnection
  6.     Private Sub conexion()
  7.         conex.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Basedatosproyecto.mdb"
  8.         conex.Open()
  9.  
  10.     End Sub
  11.  
  12.  
  13.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  14.         conexion()
  15.         picFoto.SizeMode = PictureBoxSizeMode.StretchImage
  16.     End Sub
  17.  
  18.     Private Sub exam_Click(ByVal sender As Object, ByVal e As EventArgs) Handles exam.Click
  19.         Dim ofd As New OpenFileDialog
  20.         ofd.Filter = "Imagenes JPG|*.jpg"
  21.         If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
  22.             picFoto.Image = Image.FromFile(ofd.FileName)
  23.         End If
  24.     End Sub
  25.  
  26.     Private Sub guar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles guar.Click
  27.         Try
  28.             Dim ms As New MemoryStream
  29.             picFoto.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
  30.             Dim pic As Byte() = ms.GetBuffer
  31.             If TextBox1.Text <> "" And pic.Length > 0 Then
  32.                 Dim cmd As New OleDbCommand("insert into Alumnos values(@nom,@con,@sem,@esp,@apro,@curs,@prom,@pic)", conex)
  33.                 cmd.Parameters.Add(New OleDbParameter("@nom", TextBox1.Text))
  34.                 cmd.Parameters.Add(New OleDbParameter("@con", TextBox3.Text))
  35.                 cmd.Parameters.Add(New OleDbParameter("@sem", TextBox2.Text))
  36.                 cmd.Parameters.Add(New OleDbParameter("@esp", TextBox4.Text))
  37.                 cmd.Parameters.Add(New OleDbParameter("@apro", TextBox5.Text))
  38.                 cmd.Parameters.Add(New OleDbParameter("@curs", TextBox6.Text))
  39.                 cmd.Parameters.Add(New OleDbParameter("@prom", TextBox7.Text))
  40.                 cmd.Parameters.Add(New OleDbParameter("@pic", pic))
  41.  
  42.                 cmd.ExecuteNonQuery()
  43.                 MsgBox("Los registros se han almacenado satisfactoriamente")
  44.             Else
  45.                 MsgBox("Debe agregar todos los datos")
  46.             End If
  47.         Catch ex As Exception
  48.             MsgBox(ex.Message)
  49.         End Try
  50.  
  51.     End Sub
  52. End Class
  53.  
Título: Re:Ayyuda ! Problema con base de datos
Publicado por: Haggen en Martes 12 de Julio de 2016, 22:41
  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: [Seleccionar]
   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
Título: Re:Ayyuda ! Problema con base de datos
Publicado por: DiabloRojo en Miércoles 20 de Julio de 2016, 04:48
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,