Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-02-2016
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Clave primaria a 0

Hola, estoy desarrollando con tablas Access y ADO, un sistema donde necesito limpiar una base y reiniciar la primary key. No hayo la forma de hacerlo. Intente copiar una tabla nueva con la misma estructura, pero me daba error. Agradezco quien pueda darme una mano, ya sea, copiando la nueva tabla o borrar todos los ítems y reiniciar la primary key. Muchas gracias.
Responder Con Cita
  #2  
Antiguo 05-02-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por aromigaret Ver Mensaje
.. me daba error.
¿Qué error?
Responder Con Cita
  #3  
Antiguo 05-02-2016
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Casimiro gracias por contestar,
Perdón no me da error sino simplemente no hace la operación de copiado de estructura. Te transcribo lo que hago :

Código Delphi [-]
IF MESSAGEDLG('ESTA SEGURO DE INICIAR UN NUEVO PEDIDO',MTCONFIRMATION,[MBYES,MBNO],0,MBNO) = MRYES THEN BEGIN

    PEDIDO.Close;
    LIMPIAR.SQL.Text:='INSERT INTO PEDIDOS(RENGLON,CANTIDAD,ARTICULO,MARCA,PRECIO,SUBTOTAL,CODIGONUM,UBICACION) SELECT RENGLON,CANTIDAD,ARTICULO,MARCA,PRECIO,SUBTOTAL,CODIGONUM,UBICACION FROM ORIGINAL';
    LIMPIAR.ExecSQL;
    PEDIDO.Open;

  END
Responder Con Cita
  #4  
Antiguo 05-02-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Esa sentencia inserta en la tabla pedidos los registros que existan en la tabla original.
Responder Con Cita
  #5  
Antiguo 05-02-2016
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Creí que con ello superponía la estructura también no solo los registros. Entonces como hago para copiar la estructura de Original sobre Pedidos?
Responder Con Cita
  #6  
Antiguo 05-02-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No entiendo para qué quieres hacer eso. ¿Tú quieres hacer?
Responder Con Cita
  #7  
Antiguo 05-02-2016
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Sobre la tabla Pedidos se "escriben" mercadería solicitada. Una vez impresa la nota se borran todos los artículos y se inicia nuevamente. La clave primaria, debería iniciarse para que no crezca hasta el infinito.
Responder Con Cita
  #8  
Antiguo 05-02-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Para borrar todos los registros de una tabla:
Código SQL [-]
delete from nombredelatabla
Responder Con Cita
  #9  
Antiguo 05-02-2016
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Eso lo hice, pero no reinicia la clave primaria, sigue numerando desde la ultima entrada hecha.
Responder Con Cita
  #10  
Antiguo 05-02-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y cómo lo haces?

Explica con detalle todo, puedes escribir todo lo que quieras, no hay límite, es que estamos con un diálogo casi monólogo/monosílabo
.
Responder Con Cita
  #11  
Antiguo 05-02-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No deberias nunca reiniciar la clave primaria

Cual es el problema que crezca "hasta el infinito"?
Responder Con Cita
  #12  
Antiguo 05-02-2016
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Perdón, tratare de ser mas claro.
Tengo una tabla llamada Pedidos en ella se cargan todos los ítems que va pidiendo un cliente, una vez finalizada la carga se imprime el pedido y se guarda en otra tabla lo cargado. Debo reiniciar la tabla 'Pedidos' para una nueva carga. Para ello yo hacia lo mismo que vos mencionaste:

Código Delphi [-]
PEDIDOS.close;
LIMPIAR.SQL.text:='delete from pedidos';
LIMPIAR.execsql;
PEDIDOS.open;

Pero al iniciar una nueva carga, veo que el campo auntoincrementable y clave primaria 'Renglon' de la tabla pedidos continua con el siguiente numero dejado por la anterior carga en vez de iniciar desde 1.

Acabo de probar lo siguiente:

Código Delphi [-]
    PEDIDO.Close;
    LIMPIAR.SQL.Text:='DROP TABLE PEDIDOS';
    LIMPIAR.ExecSQL;

    LIMPIAR.SQL.Text:='SELECT * INTO PEDIDOS FROM ORIGINAL';
    LIMPIAR.ExecSQL;

    PEDIDO.Open;

Intentando copiar la estructura de ORIGINAL (Una tabla igual a Pedidos, pero vacia) y me da el siguiente error cuando lo ejecuto sin el debugger:

"El motor de bases de datos Microsoft Jet no pudo encontrar el objeto 'PEDIDOS' ....."

Ahora cuando lo ejecuto con el debugger, no aparece el error, hace todo perfecto, así que no sé en que línea se produce dicho error.
Responder Con Cita
  #13  
Antiguo 05-02-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Es que basicamente estas usando una tabla para guardar 1 pedido con sus n linea de detalles y luego borras todo. Para que usar una tabla access para eso? Directamente podes mantener todo en memoria.

Si queres optar por la via de DataSet podes usar un ClientDataSet

Vas cargando todas las lineas del pedido en el ClientDataSet, una vez que se termina, lo cargas en "la otra tabla" y lo imprimes

Yo no borraria la informacion que se va guardando, agregaria un campo de estado en los pedidos (pendiente, borrado, facturado, etc)
Responder Con Cita
  #14  
Antiguo 05-02-2016
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Hola AgustinOrtu,

Te comento que no lo hago en memoria, pues al cerrar el programa se perdería la información. Dataset nunca lo use y después de estar usando el arcaico BDE, opte por interiorizarme con ADO y ahora agregue Access, después de utilizar tablas .dbf. Así que soy muy novato. Cual seria la ventaja de usar clientdataset por sobre ADO?
Responder Con Cita
  #15  
Antiguo 05-02-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
ClientDataSet es una tabla en memoria

No digo que mantengas todo el sistema entero en memoria; pero el pedido actual que estas cargando si

Vas cargando todo en una tabla de memoria (o llamala temporal si queres) que podria ser un TClientDataSet

Cuando se confirma el pedido, tomas todo lo que tiene el ClientDataSet (todos los "renglones") y lo vuelcas en la tabla access

Luego eliminas todo lo del ClientDataSet y podes volver a cargar otro pedido

Lo que digo que esta muy raro en tu programa es que estas usando una tabla para guardar basicamente una sola entidad. Estas cargando un pedido y luego lo borras y lo pasas a otra tabla. Por que?
Responder Con Cita
  #16  
Antiguo 05-02-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Hola, creo que debes aclararnos que es lo que necesitas, para la generacion de pedidos puedes o no usar una tabla temporal (sea en memoria o no), pero en si cual es tu problema, y no me refiero a el reset de la clave primaria, si no al por que quieres reiniciarla? tal ves podamos darte otra idea de hacer lo que requieres.

El autoincrement no se va a reiniciar a menos que destruyas la tabla y la vuelvas a crear, podria ser una secuencia pero estas no existen en access.

Si requiere tener un master-detail

Cabecera
producto 1
producto 2

No es necesario que pongas el autoincrement, puedes contar los productos y poner el contador, pero si es recomendable que cambies a una tabla temporal.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
query y obtener clave primaria monti SQL 6 13-12-2005 21:21:36
Ayuda Con Clave Primaria pablo2244 MySQL 4 30-05-2005 21:49:01
cambiar la clave primaria con SQL User_Baja_2 SQL 8 18-06-2004 08:41:31
Cambiar clave primaria pinoxito Firebird e Interbase 7 13-01-2004 21:51:26
cambiar una clave primaria User_Baja_2 SQL 3 06-10-2003 18:03:38


La franja horaria es GMT +2. Ahora son las 21:29:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi