Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2024
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.934
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Otro bug: Insertas 10 registros, el id va en 10. Ahora:


Borras el ultimo
Borras todos
Borras el primero

etc.


Un id debe ser global(en su contexto), único y *no repetible*
__________________
El malabarista.
Responder Con Cita
  #2  
Antiguo 29-05-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 15
darkamerico Va por buen camino
Red face

Cita:
Empezado por mamcx Ver Mensaje
Otro bug: Insertas 10 registros, el id va en 10. Ahora:


Borras el ultimo
Borras todos
Borras el primero

etc.


Un id debe ser global(en su contexto), único y *no repetible*
Muy interesante, yo uso SQL Server, alguien podría ayudarme con una función en Delphi que genere este ID unico e irrepetible?, no quisiera usar el identity.

Como siempre muchas gracias a todos.

Atte,
Americo Torres
Responder Con Cita
  #3  
Antiguo 29-05-2024
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.934
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Negarse a usar lo que el motor te da 'gratis' raramente tiene sentido. No solo es esfuerzo innecesario, es como introduces errores inesperados y limitas al motor a la hora de hacer optimizaciones.

P.D: Yo trabajo en parte construyendo un motor de base de datos desde cero(https://spacetimedb.com) y te puedo asegurar que cada componente se hace con mas detalle de lo que te puedes imaginar. Ahora estoy solamente generando el diseño básico de la autenticación y llevo 3 semanas, como 10 borradores y todo porque en un motor de base de datos hay que tener en cuenta un montón de casos extremos.

Usar el soporte de autonumericos del motor es lo que se debe de hacer a menos que tengas una buena razón, que SOLAMENTE puede ser:


* Necesitas un id universal, así que usas una UUID
* Necesitas evitar `saltos` para el caso de facturas, que entonces es complicado de hacer correcto, porque no solo debes hacer la lógica correctamente sino que debes coordinar a todas tus app que usen un modo transaccional mas estricto `SERIALIZABLE` y eso que no estoy seguro como seria en sql server
* Tienes una llave natural
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 30-05-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 15
darkamerico Va por buen camino
Red face Saludos

Preguntándole a ChatGPT, me dió la siguiente funcion, la cual ya implementé:
Código Delphi [-]
uses
  SysUtils;

function GenerateGUID: string;
var
  GUID: TGUID;
begin
  // Crear un nuevo GUID
  if CreateGUID(GUID) = S_OK then
  begin
    // Convertir el GUID a string
    Result := GUIDToString(GUID);
  end
  else
  begin
    // En caso de error, devolver una cadena vacía
    Result := '';
  end;
end;

Resultado:



Funcion:
Código Delphi [-]
function TFunciones.GeneraGUID: string;
var
  GUID: TGUID;
  GUIDStr:string;
  res:boolean;
begin
  res:=True; // Asume que el GUID está Duplicado
  while res do
  begin
    if CreateGUID(GUID) = S_OK then
    begin
      GUIDStr:=GUIDToString(GUID);
      res:=clsFx.VerificaGUIDUnico(GUIDStr);
      Result := GUIDStr;
      break;
    end
    else Result := '';
  end;
end;

Quedo atento a sus comentarios.

Atte

Última edición por darkamerico fecha: 30-05-2024 a las 20:44:37.
Responder Con Cita
  #5  
Antiguo 30-05-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 15
darkamerico Va por buen camino
Red face

Super interesante en los proyectos en que andas amigo.
Quisiera tener tu level.

Saludos

Cita:
Empezado por mamcx Ver Mensaje
Negarse a usar lo que el motor te da 'gratis' raramente tiene sentido. No solo es esfuerzo innecesario, es como introduces errores inesperados y limitas al motor a la hora de hacer optimizaciones.

P.D: Yo trabajo en parte construyendo un motor de base de datos desde cero(https://spacetimedb.com) y te puedo asegurar que cada componente se hace con mas detalle de lo que te puedes imaginar. Ahora estoy solamente generando el diseño básico de la autenticación y llevo 3 semanas, como 10 borradores y todo porque en un motor de base de datos hay que tener en cuenta un montón de casos extremos.

Usar el soporte de autonumericos del motor es lo que se debe de hacer a menos que tengas una buena razón, que SOLAMENTE puede ser:


* Necesitas un id universal, así que usas una UUID
* Necesitas evitar `saltos` para el caso de facturas, que entonces es complicado de hacer correcto, porque no solo debes hacer la lógica correctamente sino que debes coordinar a todas tus app que usen un modo transaccional mas estricto `SERIALIZABLE` y eso que no estoy seguro como seria en sql server
* Tienes una llave natural
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
Combinación de teclas para generar el método de una función danny915 Varios 4 21-11-2014 18:24:03
Mejor Metodo para Verificar Numeros Primos Victor Luis Varios 2 20-10-2013 06:33:03
Mejor Metodo para leer las teclas pmtzg Varios 3 08-11-2007 18:05:16
Otro metodo de insercion que sea mejor hacerlo via query ilichhernandez Conexión con bases de datos 2 01-07-2006 12:26:06
Mejor opcion para trabajar con tablas planas andre Tablas planas 0 30-06-2004 19:17:03


La franja horaria es GMT +2. Ahora son las 16:35:31.


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