PDA

Ver la Versión Completa : problema al insertar con MS SQL Server 2000


alastor
27-10-2006, 18:12:58
Hola amigos :
-----------------
Casi podria decirse que estoy empesando a trabajar con SM SQL SERVER. Tengo creada una base de datos que contiene 3 tablas relacionadas entre si:
1------>3
2------>3
Cuando realizo operaciones con la 1 y 2 todo ocurre normalmente, pero cuando voy a insertar un nuevo registro en la 3 me pasa lo sgte:

despues de haber llenado uno de los campos ocurre este error:

Project Modelo1.exe raised exception class EOLeException with message 'Error desconocido'.
Process stopped. Use step or run to continue.

La tabla 3 contiene los sgtes campos
Id-------Int(Clave Primaria)
Etapa---Int
Provincia-Char
Destino--Int(Campo relacionado con tabla 1)
Producto-Int(Campo relacionado con tabla 2)
Necesidad --Float
Asignacion--Float
Producto_LK--string(Campo lookup que hace referencia al id de la tabla 1, y muestra el nombre del producto)
Dest_LK------string(Campo lookup que hace referencia al id de la tabla 2, y muestra el nombre del destino)
----------------------------------------------------------
Si alguien conoce el origen de este error le agradeceria que me respondiera.
_________________
Saludos

edgusano
27-10-2006, 21:23:04
Podrias poner un ejemplo de que datos estas tratando de ingresar en dicha tabla...

alastor
27-10-2006, 23:08:22
Por ejemplo:
Tengo Un DBCombobox para el campo etapa donde escojo 1 o 2....
Tengo Un DBCombobox para el campo Provincias donde pongo el nombre de la provincia
Tengo Un DBLookupcombobox para el campo Destino el cual debe de mostrarme un nombre y guardar en la tabla un numero que lo identifica, lo mismo pasa con el campo producto.
Tengo Un DBEdit para el campo ID que es el campo identificador de esta tabla y nesecidad y asignacion estan en dbedit y guardan un numero real.
El error me da al escoger la etapa y el producto por ejemplo. espero que hallas entendido.

donki
30-10-2006, 19:32:32
Revisa la Query que usas para editar los datos. Mira tambien que no tenga JOINS.

Tambien revisa la versión de MDAC que tienes instalada. La última existente és la 2.8.

Si no lo solucionas, mira de postear las SQL que usas para acceder y manipular la tabla.

Saludos

alastor
31-10-2006, 17:51:51
Hola
Me he dado cuenta de que este error solo ocurre cuando en mi formulario existen DBCombobox, DBLookupCombobox u otro componente desplegable, porque con los DBEdits trabaja de lo mas bien. ¿Que podria ser eso?
Nota: Cuando ejecuto el programa desde el explorador , todo ocurre co debiera de ser???????

donki
31-10-2006, 18:11:55
Hola Alastor,

Eso no es un bug tuyo, es de la unit ADODB. Cuando hace el locate para situarse en el registro correspondiente salta ese error. No debes preocuparte, aunque es molesto para debugar. A mi tambien me ocurre. La excepción està controlada, pero en run-time debugando salta (de forma normal claro).

En el caso de campos de lookup debes poner el valor de lookupcache a true para no pase, en el caso de los controles de lookup hay una solución, però no he osado

Hay una modificación para corregir el error, pero yo no he osado ponerla. Mas vale conocido que bueno por conocer.

c'ya

alastor
01-11-2006, 18:10:38
Muchisimas gracias por tus aclaraciones, me ayudaron de mucho, pues cuando me puse a provar con el ADOQuerry le quite los campos de su editor de campos y ya guarda de maravilla. ahora el error que me saca es otro.

Cuando ,despues de haber guardado, realizo alguna modificacion en la tabla(Entiendace: Actualizar los datos, eliminar) me muestra el siguiente error:

EOleException
El valor clave de esta fila se cambio o elimino en el almacen de datos. A continuacion se eliminara la fila local


Que crees de eso????

donki
02-11-2006, 07:52:55
Eso sucede porque tienes un valor por defecto que el SQL Server 2000 pone. Y al modificar no has refrescado.

Saludos

alastor
02-11-2006, 16:13:14
Me sucede lo siguiente:
voy al ultimo registro.
refresco los datos.
inserto el nuevo registro y guardo,
pero cuando doy a refrescar me pone el error que te he dicho antes. He buscado en la tabla los valores por defecto que tu mencionabas pero ninguno de los campos tiene valores por defecto.:confused:

donki
03-11-2006, 09:17:59
Haces el refresh cerrando y abriendo la query o con el método refresh.

El método refresh no hace nada en el caso de TAdoquery

alastor
03-11-2006, 16:38:14
yo uso el metodo refresh para actualizar los datos, o es que acaso cada vez que guarde algo debos de cerrar y abrir el querry ???
__________________
Saludos

donki
03-11-2006, 17:24:35
No.

El problema lo tienes en el refresh.

Por otro lado, haz una prueba:

1.- Quita el refresh
2.- Inserta un registro desde tu aplicación.
3.- Revisa los valores de los campos del registro añadido desde tu aplicación y directamente desde la tabla. Seguro que tienes campos diferentes.

Mira los campos diferentes si tienen valores asignados por defecto o bien tienes algun trigger que los modifica a posterior.

Saludos

alastor
06-11-2006, 21:08:52
Hice lo que me indicaste y el lo guarda perfectamente, pero si despues quiero refrescar los datos, o borrar alguno, me da ese error.

Si fueses tan amable de ponerme algun ejemplo de como tu harias para guardar, refrescar los datos y borrarlos, teniendo dos campos lookup, y los otros que te he dicho anteriormente y con las relaciones que tengo hechas, te lo agradeceria enormemente.
Saludos
________________

alastor
07-11-2006, 16:57:24
Hola donki
________________
Al fin despues de tantear con muchas cosas me di cuenta de que el problema era que debia de usar un ADOTable en vez de un ADOQuerry. parece que el querry posee algun tipo de propiedad que no deja actualizar y borrar cuando tengo dbcombobox y dblookupcombobox.
______________
Saludos y muchas gracias por tu ayuda e interes