Club Delphi  
    Paypal   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 Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 17-11-2022
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.939
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por amadis Ver Mensaje
Podrias compartir un poco mas sobre como haces la comparacion y el archivo con las constantes.?
Lo hago en otros lenguajes pero quizás la forma mas simple en Delphi es ponerlo en un TMemo y copiar ahi el SQL.


Cita:
Empezado por amadis Ver Mensaje
En cuanto a la logica para el chequeo, se me ocurre en el source, del form principal, luego de crear los datos y conexion a bd.

De hecho, yo lo pongo como una función de la BD:

Código SQL [-]
CREATE OR REPLACE FUNCTION db_master_version(OUT RETURNS INTEGER)
AS $$
BEGIN
  RETURNS = 2;
END;
$$
LANGUAGE plpgsql;

Para la logica, lo que hago es que hago in split del SQL en cada "GO"

Código SQL [-]
--version: 2

DROP TRIGGER IF EXISTS visit_code_update_tg ON payment;

GO

--version: 3
ALTER TABLE doc_codes
ADD COLUMN doc_code  TEXT PRIMARY KEY DEFAULT generate_ulid() CHECK (not_empty(doc_code));

GO

Y parser el segmento de "version". Esto es rust pero la lógica creo se entiende:

Código PHP:
// of es el SQL con los comandos de DB
pub fn load_cmds(of: &str) -> Vec<CmdDB> {
    
let mut cmd Vec::new();
    
let mut sql CmdDB {
        
version0,
        
sql"".to_string(),
    };

    
// Recorro por lineas
    
for line in of.lines() {
        
// Al encontrar esto, paseo el numero como un integer
        
if line.starts_with("--name:") {
            
sql.version line.replace("--name:""").trim().parse().unwrap();
            
sql.sql.clear();
            continue;
        };
        
// Acumulo el SQL hasta que encuentro el GO
        
if line.starts_with("GO") {
            
cmd.push(sql.clone())
        } else {
            
sql.sql += &format!("{}\n"line);
        }
    }
    
// Retorno los comandos partidos por version
    
cmd
}

//Se ven asi:

CmdDB {
        
version2,
        
sql"
DROP TRIGGER IF EXISTS visit_code_update_tg ON payment;

"
}; 
__________________
El malabarista.
Responder Con Cita
 



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
[FireDAC] Desconexión a la Base de Datos MAXIUM Conexión con bases de datos 4 14-06-2021 20:12:59
Filtrar Base de Datos FireDac pokexperto1 Conexión con bases de datos 6 03-10-2015 00:26:07
Controlar Cambios en la Base de Datos afunez2007 MS SQL Server 5 12-07-2013 18:04:12
Chequear integridad base de datos Toni Firebird e Interbase 4 09-01-2013 20:02:34
Como hacer conexión de una base de datos en firebird. Niiña Conexión con bases de datos 5 28-11-2011 22:43:04


La franja horaria es GMT +2. Ahora son las 05:56:41.


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