Usuario
Non funciona ninguna consulta insert , update.

Pregunta
-
Ejecuto las consultas desde el codigo, le asigono el executeNonQuery a una variable int para ver si devuelve algo y siempre un 1 pero en la BBDD no cambia ningun registro. Creo que se trata de la propiedad de la BBDD Copiar en el directorio de resultados pero al cambiarala y ponerla en No copiar me dice que la BBDD esta en uso y no me deja ejecutar el codigo. Soy incapaz de arreglarlo. Haciendo consultas alamacenadas podria ser¿? Tengo en cada form una conexion propia y en cada form la abro y la cierro, puede que haciendo solo una conexion y llamandole a esa todo el rato puede que funcione¿?
Alguna idea por favor, gracias de antemano un saludo!
Tximas
Todas las respuestas
-
-
Sí, deberían verse los datos actualizados.
Ten en cuenta que si la BBDD la tienes en la carpeta de proyecto y se está copiando a la carpeta de compilación, el archivo de base de datos que deberías consultar para ver los cambios es el que se encuentra en la carpeta bin/debug.
Siempre que tomes la ruta del archivo de base de datos relativa a la carpeta de ejecución. Supongo que ya lo habrás puesto en alguno de los posts pero ¿cómo defines la cadena de conexión?
Píldoras .NET
Artículos, tutoriales y ejemplos de código .NETPíldoras JS
Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ... -
-
public static string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\BBDD.accdb; Jet OLEDB:Database Password=123456789";
Asi tengo la cadena de conexion, y lo que dices es cierto, en tiempo de ejecucion en la carpeta bin/debug en la BBDD
salen todos los cambios correctamente.
Que puedo hacer para arreglarlo? Colocar la BBDD de datos en otro sitio?
-
-
Cuando utilizas ese tipo de comando muy importante poner arriba esto:
Imports System.Data
Imports System.Data.OleDbTe dejo un ejemplo que a mi me funciona a la perfección...
Dim connDB As New OleDbConnection
Dim cmd As New OleDbCommand
Try
Dim conString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|\Listado_Material.accdb; Persist Security Info = False "
connDB = New OleDb.OleDbConnection(conString)
connDB.Open()
cmd = New OleDb.OleDbCommand("INSERT INTO ListadoElectrico ( Cantidad, Descripcion, NumeroParte, Marca, Proveedor, CantidadUnitaria, CostoTotal) VALUES (" & CantidadTextBox.Text & ",'" & DescripcionTextBox.Text & "','" & NumeroParteTextBox.Text & "','" & MarcaTextBox.Text & "','" & ProveedorTextBox.Text & "'," & CantidadUnitariaTextBox.Text & "," & CostoTotalTextBox.Text & ")", connDB)
cmd.ExecuteNonQuery()
connDB.Close()
MsgBox("Dato Insertado")
Catch ex As Exception
MsgBox(ex.Message)
End TryEn caso de que estés usando Community 2015 existe una manera mucho mas sencilla de hacer conexiones sin usar los comandos OLEB.
Dale un vistazo a este vídeo:
https://www.youtube.com/watch?v=_4D6_j_JGes
-
Hola:
Copiar en el directorio de resultados pero al cambiarala y ponerla en No copiar me dice que la BBDD esta en uso y no me deja ejecutar el codigo
Asegúrate no tener el archivo Access abierto cuando intentes hacer ese cambio.
En la Cadena de conexión deberia hacer referencia a la BBDD de la carpeta /bin/debug en vez de a la BBDD
Es lo mismo, lo que haces en tu cadena de conexion actual usando en Data directory es tomar siempre el path desde donde se esta ejecutando tu aplicación, cuando debugueas normalmente es la carpeta bin/debug
Si no recibes ningún mensaje de excepción entonces las consultas si se estan ejecutando y el problema esta en la propiedad de tu base de datos, podrías hacer una prueba moviendola a la unidad C:/test y luego apuntas tu cadena de conexión a ese directorio:
public static string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test\BBDD.accdb; Jet OLEDB:Database Password=123456789";
Has esa prueba y nos informas.
Saludos desde Monterrey, Nuevo León, México!!!