Visual Basic Foro
General => General => Mensaje iniciado por: marino en Octubre 03, 2011, 08:23:37 pm
-
Que tal amigos.
Bueno estoy trabajando en un programa bajo el lenguaje J++ y tengo algunos problemas.
Lo primero es que debo manejar una Base de datos. Ya saben, añadir nuevos, modificar, eliminar etc.
Mi problema es que estoy usando una base de datos en blanco. Obviamente tengo la coneccion hecha y todo. Mi problema es que al tratar de guardar un registro me saltaa el siguiente error
"No es posible insertar una fila vacia. Debe contener al menos un valor de columna establecido"
Alguien sabe como puedo arreglarlo?
PD: Si este tema no va aqui disculpen :-[
-
Tal como planteas la inquietud sin una sola linea de código de lo que haces no veo otro consejo que remitirte a google.
También el mensaje de error que te da te esta diciendo en que estas fallando, pero bueno, si quieres una mano publica el código con el que haces la inserción para saber de que estamos hablando.
Saludos
-
Gracias YAcosta
Bueno, en realidad no coloque el code ya que queria saber si alguien maneja este lenguaje, ya que he buscado por todo internet, pero por ser un lenguaje antiguo y descontinuado, casi no hay material sobre el, y suguieren otros lenguajes. El problema es que en el colegio es el lenguaje que nos han impuesto y debemos hacerlo en este. Dicho este sermon que hasta a mi me aburrio ;D ;D les doy la parte del codigo que he puesto correspondiente a la bd.
Boton "Nuevo"
dataSource1.getRecorset().addNew();
Boton "Guardar"
dataSource1.getRecordset().update()
Y es justamente al dar a guardar cuando me aparece el error.
El mismo codigo lo utilice en la practica del colegio. Sin embargo en el colegio llenamos primero la bd con algunos datos de ejemplo. En el programa que estoy realizando trabajo con una bd vacia, para empezarla desde 0.
El del colegio funciona, incluso si borro todos los registros y comienzo de nuevo. Pero en este nuevo, nada.
Lo cual me lleva a pensar que puede ser algo en la conexion a la bd, no lo se. Por eso preguntaba si alguien maneja este lenguaje, asi tal vez podria compartir el proyecto y analizarlo para saber donde esta mi error.
Aclaro, no me interesa que alguien lo haga por mi, me interesa aprender, pero por desgracia la info respecto a este lenguaje escasea.
Gracias
-
Si pues, ta difícil con un lenguaje que se usa poco.
En todo caso no creo que sea un problema de conexión, porque si lo fuera ni siquiera te hubiera aparecido este error:
"No es posible insertar una fila vacia. Debe contener al menos un valor de columna establecido"
Checa que realmente estés mandando datos, quizá tus variables están vacías porque al parecer no le estas mandando nada.
Por cierto, que BD usas?
-
Gracias
Uso bd hecha en Access 2003, uso la conexion Microsoft Jet 4.0 OLE BD Provider.
Asi mismo uso un DataBinder para hacer la conexion de las columnas de la db con los campos de mi programa, en este caso son edit1, edit2, .... etc.
Antes de guardar tengo varias lineas de codigo comprobando que no falte ningun dato en los edits, de lo contrario manda mensaje y solicitar los datos faltantes. Si faltan datos el boton "Guardar" no se activa.
De nuevo gracias por tu tiempo y atencion
-
Muestranos el String de Conexion completo por favor...!
-
Provider=Microsoft.Jet.OLEBD.4.0;Data Source=C:\Documents and Settings\Esc\Mis documentos\Visual Studio Projects\Project3\db1.mdb;Persist Security Info=False
Obviamente tambien en commandText tengo:
select * form Tabla1
Gracias
-
La estructura de la tabla,
como creaste la tabla? Posee algun campo con valor Not Null?
Puesto que de ser así, no deberías dejarla en blanco...! Verifica si tienes el campo Index no lo tienes Autonumerico y no lo tomas en cuenta al hacer el insert...!
-
La tabla fue creada en vista diseño.
Todos los tipos de datos son texto, sin embargo, encontre que en la primera columna el Indexado esta va activo
Indexado SI (Con duplicados)
Y en la tabla echa en el colegio ninguno tenia esa propiedad, sin embargo no se porque pudo colocarse asi, ya que al momento de crearla no me meti en nada masque en tipo de datos.
En fin, ya he cambiado el indexado a no. Voy a probar a ver si ahora si me funciona.
Gracias
Edito:
No Fuciono, de nuevo el mismo problema :(
-
Mira, pon todo el código completo del botón donde mandas a grabar, así esté en ese lenguaje raro quizá algo podemos detectar.
Te esperamos.
-
Es el unico code que tengo en el boton guardar, no he añadido mas funciones hasta no resolver este problema
dataSource1.getRecordset().update();
-
Pero no puede ser posible que ese sea todo el código!!
Por mas que estés usándolo tipo Wizard igual en algún lado debes tener la cadena que inserta tus datos, si eso es todo pues esa es la respuesta, no estas asignando nada.
Como sabe dataSource1.getRecordset().update();
en que tabla debes guardar? en que campos debes guardar? Esa cadena por si sola es imposible que guarde algo, previo a eso debes tener ya sea por código o por propiedades del control algo como "Insert Into TuTabla... etc etc"
Ese es el código que deberías proporcionar, de otra forma no hay manera de poderte ayudar.
Saludos
-
Aqui coloco todo el proyecto que estoy manejando en el formulario:
http://www.megaupload.com/?d=9LR1VEBE
No coloque el code completo aqui ya que excede el limite de caracteres
Gracias
-
Bueno, haces muy difícil ayudarte. No era para que te publiques todo el proyecto aquí, solo el code del Boton o Proceso desde donde haces la inserción. SI aun así tienes el megacodigo con cientos de lineas para hacer un insert, pues hubieras abierto el Notepad, guardarlo en archivo txt y subir ese archivo.
No tengo como abrir tu proyecto así que esperemos que alguien lo haga y pueda darte una mano.
Saludos
-
El archivo Form1.java puede abrirse en block de notas para ver el code.
Perdona mi ignorancia, pero por eso aclaro desde el inicio si alguien maneja este lenguaje ya que asi sabria de que estoy hablando.
Pero te repito el code referente a base de datos en el boton guardar solo es el que puse antes.
te muestro la seccion de el boton guardar
private void button9_click(Object source, Event e)
{
if (edit3.getText().equals(""))
{
MessageBox.show("No puede Guardar sin un Nombre","No hay Nombre");
edit3.focus();
}
dataSource1.getRecordset().update();
}
Gracias
-
Perdona mi ignorancia, pero por eso aclaro desde el inicio si alguien maneja este lenguaje ya que asi sabria de que estoy hablando
Listo, ahorita va a aparecer alguien que si sepa de que hablas.
Suerte.
-
Gracias por tu tiempo y perdona por habe hecho que lo perdieras en tratar de ayudar a alguien.
Por cierto, el sarcasmo tampoco ayuda mucho.
Gracias. Buscare ayuda en otro lado.
-
No es sarcasmo, es reconocimiento, simplemente no se de que hablas y no puedo ayudarte mas, es todo.
Este foro es de VB6 principalmente, no se porque publicaste aquí cuando podías ganar tiempo publicando en foros por lo menos de java que es lo mas parecido. Claro que vi tu code del form1 y de todo lo demás con el notepad pero en ningún lado veo el Insert, así que debe ser que eso se maneje en otra capa, como no manyo nada de eso te dije que alguien pueda aparecer que si sepa de esto.
Suerte.
-
Provider=Microsoft.Jet.OLEBD.4.0;Data Source=C:\Documents and Settings\Esc\Mis documentos\Visual Studio Projects\Project3\db1.mdb;Persist Security Info=False
Obviamente tambien en commandText tengo:
select * form Tabla1
Gracias
Alli estas diciendo obviamente tienes en el commantext "select....", a eso me refiero, donde esta el "Insert Into Tabla...etc" ? ? ? ?.
-
No se como sea J++ pero segun el ADO que se usa en VB6, no deberias llamar a update ya que este actualiza una tabla y no estas especificando nada para actualizar (ni en donde)
Si lo que quieres es recargar los datos del recordset. Llama a la funcion requery
-
No expone nada de lo que tiene, asi es muy dificil ayudarlo...!