Foros del Web » Programación para mayores de 30 ;) » .NET »

Error al insertar en BD access 2003

Estas en el tema de Error al insertar en BD access 2003 en el foro de .NET en Foros del Web. Hola, tengo un problema, a la hora de insertar datos en una tabla, con el campo que es clave principal. El campo que es clave ...
  #1 (permalink)  
Antiguo 19/07/2007, 10:11
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Exclamación Error al insertar en BD access 2003

Hola,

tengo un problema, a la hora de insertar datos en una tabla, con el campo que es clave principal.

El campo que es clave principal es de tipo texto, ya que se deben almacenar códigos alfanuméricos.


Inserto códigos distintos cada vez, pero me da error de que no se puede insertar el registro porque 'crearía valores duplicados en la clave principal, índice o relaciones'...

Las tablas no las tengo relacionadas en el editor de access y las claves son cada vez distintas...o sea que no sé porque me da ese error.

Por ejemplo, si inserto un registro con la clave: A1 , y luego inserto un nuevo registro con la clave A2, ya me sale el error....y de ahí ya no salgo.

Alguna idea?

saludos
  #2 (permalink)  
Antiguo 19/07/2007, 10:24
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Error al insertar en BD access 2003

Hola freegirl, no es conveniente usar caracteres en un campo PK, por que, como lo mencionas tu misma puedes generar un conflicto, aunque tu sistema y tu forma de programar digan lo contrario y esa es una causa del aviso que se te da, te lo menciono por que yo también así comencé a utilizar 'text' y me mandaban estos errores.

Puedes tener o hacer 2 opciones:

1. - No manejar PK en tu tabla, si no las tienes relacionadas y ni las vas a relacionar, no tiene caso que le coloques llave primaria (PK)

2. - Puedes hacerlo con 2 campos, uno que tenga la clave primaria de tipo numérico y otro que tenga tu clave, de los cuales ninguno se tendría que repetir.

Espero te haya ayudado esta información
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 19/07/2007, 10:50
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Re: Error al insertar en BD access 2003

Gracias por responder.

el problema de la segunda opción, es que el código numérico si se puede repetir, pero es en su conjunto que no se puede repetir. o sea, el campo 'código' está formado por un prefijo alfanumérico, y luego le precede un campo numérico. Por ejemplo:

AB0001
AB0002
AC0001

Si te fijas 0001 se repite pero el código completo no. Por lo cual, si hago sólo como clave principal el campo numérico me daría error también. (o al menos eso entendí yo) ¿o a qué te referías?

Lo probé separando el campo 'codigo' en dos campos, los dos los hice PK: prefijo y numero, pero también da error de duplicados. Supongo que es por lo que dices del campo "text" y eso.

Sino, pues optaría por la primera opción.

Saludos
  #4 (permalink)  
Antiguo 19/07/2007, 11:22
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Error al insertar en BD access 2003

Ese error es raro. Bueno nunca he trabajado con capos tipo text. Tan solo con char y varchar, no se que puede tener de especial el tipo text
  #5 (permalink)  
Antiguo 19/07/2007, 12:39
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Error al insertar en BD access 2003

Cita:
Iniciado por Developer9 Ver Mensaje
Ese error es raro. Bueno nunca he trabajado con capos tipo text. Tan solo con char y varchar, no se que puede tener de especial el tipo text
Como se nota que en tu vida no has usado access


Cita:
Iniciado por freegirl

Gracias por responder.

el problema de la segunda opción, es que el código numérico si se puede repetir, pero es en su conjunto que no se puede repetir. o sea, el campo 'código' está formado por un prefijo alfanumérico, y luego le precede un campo numérico. Por ejemplo:...
A lo que me refiero es a esto:

Tienes tu campo así:

A0001
A0002
.
.
.
B0001
B0002

A lo que voy con la segunda opción, es que crees un campo llamado id y otro idX, por decirlo, entonces en el campo "id" sería numérico y el otro "idX" sería "text", y en este caso "id" sería PK y el otro solo un identificador, a que voy, en este caso, tendrías que crear una rutina para que, cuando vayas a insertar el "idX" este no se encuentre repetido y así puedas guardarlo o no, considerando que el campo "id" va a traer la PK y no tu numero de tipo texto, espero me haya explicado mejor
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #6 (permalink)  
Antiguo 19/07/2007, 12:53
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Error al insertar en BD access 2003

Cita:
Iniciado por erick_arcini Ver Mensaje
Como se nota que en tu vida no has usado access


Ya me di cuenta que no hay varchar en access

Es que me confundí, no lo recordaba. Lo utilicé alguna vez en la escuela, para hacer esos debercitos baratos

girl, porqué no utilizas sql server?
  #7 (permalink)  
Antiguo 19/07/2007, 13:55
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Re: Error al insertar en BD access 2003

Hola,

las rutinas para comprobar si hay id's repetidos ya las tengo implementadas en todos los programas. O sea con sólo quitar el PK en el access ya está. pero me gustaba tener también configurada una clave en el access por si me fallaba al rutina. No tiene porqué fallar pero he visto a veces cosas raras a hacer..

Resumiendo, opto por quitar la clave en el access y quedarme con la comprabación de claves repes mediante código.

Sobre lo de SQL Server:

básicamente porque me gusta utilizar access para aplicaciones dónde el tráfico y el volumen de datos es menor.
Para según que app veo que es demasiado poner SQL Server, básicamente porque el bolsillo del cliente no da para tanto y tampoco le hace falta....Otra cosa sería optar por SQL Server Express...pero es lo que digo, según la app que desarrolle prefiero usar una BD u otra.
Tal y como tengo montadas las aplicaciones, no hay ningún problema en que el cliente posteriormente requiera SQL Server. Para eso siempre hay tiempo.

Saludos
  #8 (permalink)  
Antiguo 19/07/2007, 14:21
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Error al insertar en BD access 2003

wueno... la cosa es que Access no es una base de datos propiamente dicha
  #9 (permalink)  
Antiguo 19/07/2007, 15:20
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Error al insertar en BD access 2003

Cita:
Iniciado por Developer9 Ver Mensaje
wueno... la cosa es que Access no es una base de datos propiamente dicha
es un excel con herramientas avanzadas

freegirl, Para este caso te recomendaría MySQL o también DB2 Express
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #10 (permalink)  
Antiguo 19/07/2007, 15:50
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Error al insertar en BD access 2003

na nai nanai... SQL Server, en su versión free
  #11 (permalink)  
Antiguo 20/07/2007, 09:41
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Re: Error al insertar en BD access 2003

Pues al final resulta que no era fallo del camp clave, resulta que sin querer maree un campo de la base de datos.
Pues se ve que sin darme cuenta, cambié la propiedad "indexado=sin duplicados" de un campo numérico y de ahí salía el error. Ya que es un campo numérico que sí se repite.

He dejado la PK en el campo alfanumérico y ahora si funciona bien. Sorry.

Saludos

PD: que manía le teneis al access...Pues a mi me da buenos resultados. Aunque si requiero más si prefiero SQL Server o SQL SERVER Express. Es que depende mucho de la app.
  #12 (permalink)  
Antiguo 20/07/2007, 12:12
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Error al insertar en BD access 2003

Cita:
Iniciado por freegirl Ver Mensaje
Pues al final resulta que no era fallo del camp clave, resulta que sin querer maree un campo de la base de datos.
Pues se ve que sin darme cuenta, cambié la propiedad "indexado=sin duplicados" de un campo numérico y de ahí salía el error. Ya que es un campo numérico que sí se repite.

He dejado la PK en el campo alfanumérico y ahora si funciona bien. Sorry.
Mujeres...

Cita:
Iniciado por freegirl Ver Mensaje
PD: que manía le teneis al access...Pues a mi me da buenos resultados. Aunque si requiero más si prefiero SQL Server o SQL SERVER Express. Es que depende mucho de la app.
La manía es que en la práctica Access no debería servir para nada profesional, simplemente debería de ser utilizado como una herramienta para aprender la gestión de un manejador de datos, ya que se deja mucho que desear en propiedades básicas que una bd debe tener, girl:

Como gestionas la seguridad de los datos
Como gestionas el respaldo de los datos
Como responde la base si tienes mas de 10 usuarios conectados al mismo tiempo
Que harías si tu archivo de Access llega a pesar 1 Gb
Como manejas un log de las transacciones efectuadas en la base

...

Buen provecho
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:54.