Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: seguis en 15 Junio 2014, 17:34 pm



Título: Vb Net + Access 2007
Publicado por: seguis en 15 Junio 2014, 17:34 pm
Saludos a todos, trato de agregar datos a Access 2007 con Vb net 2005, pero me sale el siguiente error:

No se controló System.Runtime.InteropServices.COMException
  ErrorCode=-2147217900
  Message="Error de sintaxis en la cadena en la expresión de consulta ''3107)'." //Este "3107" se trata del numero que ingreso en textbox2.text
  Source="Microsoft Office Access Database Engine"
  StackTrace:
       en ADODB.ConnectionClass.Execute(String CommandText, Object& RecordsAffected, Int32 Options)
       en Agenda.Form1.Button1_Click(Object sender, EventArgs e) en C:\Users\Seguix\AppData\Local\Temporary Projects\Agenda\Form1.vb:línea 10
       en System.Windows.Forms.Control.OnClick(EventArgs e)
       en System.Windows.Forms.Button.OnClick(EventArgs e)
       en System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       en System.Windows.Forms.Control.WndProc(Message& m)
       en System.Windows.Forms.ButtonBase.WndProc(Message& m)
       en System.Windows.Forms.Button.WndProc(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       en System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       en System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       en System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       en System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       en System.Windows.Forms.Application.Run(ApplicationContext context)
       en Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       en Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       en Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       en Agenda.My.MyApplication.Main(String[] Args) en 17d14f5c-a337-4978-8281-53493378c1071.vb:línea 81
       en System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       en System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       en Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       en System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       en System.Threading.ThreadHelper.ThreadStart()

El codigo es:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CONECTAR()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Abrir.Open()
        SQL = "INSERT INTO Prueba(Nombre,Numero) VALUES(" & TextBox1.Text & ",'" & Val(TextBox2.Text) & ")"
        RS = Abrir.Execute(SQL)
        Abrir.Close()
    End Sub
End Class

El codigo del modulo es:

Module Module1
    Public SQL As String
    Public RS As New ADODB.Recordset 'Espacios de memoria

    Public Abrir As ADODB.Connection 'Variable para conexion

    Public Sub CONECTAR()
        Abrir = New ADODB.Connection
        Abrir.ConnectionString = "PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE= C:\Users\Seguix\Documents\Base.accdb"
    End Sub
End Module


Título: Re: Vb Net + Access 2007
Publicado por: FranciskoAsdf en 15 Junio 2014, 22:11 pm
Y que tipo de datos es el campo en el que estas tratando de escribir?

Esos errores son casi siempre porque intentas escribir un valor Numero en un campo de tipo Cadena.

Fijate que los tipos de datos que quieres escribir sean todos iguales en los campos de la BD, el TextBox.

Saludos.