Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-08-2008
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
secuencia en red

hola a todos como estan, espero k esten bien, les cuento que estoy haciendo un programa en el cual tengo una tabla sql con un campo llamado numsec de tipo int el cual es una clave primaria, lo que quiero hacer es que cada vez que el usuario le de al boton grabar el campo numsec se incremente en 1 (emular a un campo identiy), bien lo que he hecho es que en un componente tquery he usado la clausula select max(numsec) + 1 al momento del usuario darle al boton grabar, esto funciona correctamente en una maquina que este trabajndo local, el problema es que la aplicacion se ejecutara en red con varios usuarios trabajando simultaneamente sobre la misma asi que creo que me dara un error de violacion de clave primaria, espero k me haya dado a entender, y por favor me puedan sugerir algo para solucionarlo, gracias de antemano...
Responder Con Cita
  #2  
Antiguo 07-08-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
" en este momento nuestros operadores estan ocupados investigando telepaticamente que version de delphi esta usted usando, asi como cual es el motor de base datos con el que trabaja su aplicacion. Por favor no cuelgue, un ejecutivo lo atendera"
Responder Con Cita
  #3  
Antiguo 07-08-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Cool

Cita:
Empezado por ingmichel Ver Mensaje
hola a todos como estan, espero k esten bien, les cuento que estoy haciendo un programa en el cual tengo una tabla sql con un campo llamado numsec de tipo int el cual es una clave primaria, lo que quiero hacer es que cada vez que el usuario le de al boton grabar el campo numsec se incremente en 1 (emular a un campo identiy), bien lo que he hecho es que en un componente tquery he usado la clausula select max(numsec) + 1 al momento del usuario darle al boton grabar, esto funciona correctamente en una maquina que este trabajndo local, el problema es que la aplicacion se ejecutara en red con varios usuarios trabajando simultaneamente sobre la misma asi que creo que me dara un error de violacion de clave primaria, espero k me haya dado a entender, y por favor me puedan sugerir algo para solucionarlo, gracias de antemano...

Debes indicar más información.. motor de base de datos... y versión de delphi...

Salu2

PD: Esto hace una simulación del traspaso del llamado de FGarcia a mi...
__________________
BlueSteel
Responder Con Cita
  #4  
Antiguo 07-08-2008
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
secuencia en red

hola chicos, gracias por responderme, es verdad se me paso indicar que estoy utilizando el motor de bd a sql server 2000 y la version de delphi 7.
Responder Con Cita
  #5  
Antiguo 07-08-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Wink

Cita:
Empezado por ingmichel Ver Mensaje
hola chicos, gracias por responderme, es verdad se me paso indicar que estoy utilizando el motor de bd a sql server 2000 y la version de delphi 7.
Hola ingmichel...

pero cual es el problema que designes el campo como identidad, cuando eso el SQL 2000 lo hace....

Otra opción es que te crees un trigger, y al momento de guardar te genere el numero del numsec, asi te evitaras cualquier problema, por que el numero se asignará en el servidor y no en el cliente...

tendrias que hacer un trigger en el evento before insert..

Espero que esto te sirva
Salu2
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 07-08-2008
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
Cita:
Empezado por BlueSteel Ver Mensaje
Hola ingmichel...

pero cual es el problema que designes el campo como identidad, cuando eso el SQL 2000 lo hace....

Otra opción es que te crees un trigger, y al momento de guardar te genere el numero del numsec, asi te evitaras cualquier problema, por que el numero se asignará en el servidor y no en el cliente...

tendrias que hacer un trigger en el evento before insert..

Espero que esto te sirva
Salu2

k tal bluesteel, veras lo que sucede es que estoy trabajando desconectado, es decir no estoy usando componentes db y no estoy utilizando capos de un query para hacer un insert, por lo que esta descartado el uso del evento before insert, veras, estoy haciendo un mastro detalle y por eso es que no quiero hacer uso del campo identity ya que en ocaciones trae muchos problemas,
Responder Con Cita
  #7  
Antiguo 08-08-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.737
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
estoy trabajando desconectado ???
Si estás desconectado, cómo insertas en la base?

Cita:
no estoy utilizando capos de un query ???
Y cómo lo haces?

De todos modos, puedes utilizar triggers para que calculen el MAX(ID) y lo agreguen automáticamente.
Responder Con Cita
  #8  
Antiguo 08-08-2008
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
re

Cita:
Empezado por duilioisola Ver Mensaje
Si estás desconectado, cómo insertas en la base?


Y cómo lo haces?

De todos modos, puedes utilizar triggers para que calculen el MAX(ID) y lo agreguen automáticamente.
hola que tal, y como crearia dicho triguer ?, seria para for insert, for delete o for update o todas
Responder Con Cita
  #9  
Antiguo 09-08-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.737
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Debería ser FOR INSERT, pues es dónde se crea.
Cuando hagas una modificación, deberás verificar que no cambie.
Cuando borres, deberías tener un trigger FOR DELETE en la cabecera que borre el detalle, para que no queden líneas huérfanas.
Responder Con Cita
Respuesta



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
Secuencia de imagenes mancurnino Varios 8 20-05-2008 18:15:13
Orden de secuencia incorrecto AngelV JAVA 4 13-09-2007 15:06:02
Secuencia de pantallas jandres Varios 1 11-09-2006 18:22:55
secuencia rex MS SQL Server 1 20-04-2006 05:49:43
Iniciar nº secuencia el primer día del año Jose Manuel Oracle 0 13-08-2005 21:36:45


La franja horaria es GMT +2. Ahora son las 19:27:55.


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