Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 19
pmtzg Va por buen camino
gracias Amigo
pero probe pero no es por ahi }


solo quisiera saber si ya le meti un tye except, que puedo hacer para que no separe mi proceso salte este registro o error y siga insertando mas registros


Aguien me pueda dar una manita mas , de verdad q no le hayo

gracias
Responder Con Cita
  #2  
Antiguo 18-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pmtzg.

Cita:
segun yo es por que estoy tratando de insertar una dato o un campo que ya existe en mi tabla
Estas bién orientado: Attempt to store duplicate value (visible to active transactions) in unique index.

Cita:
pero probe pero no es por ahi
Sin embargo, al igual que newtron, estoy totalmente convencido de que sí es por ahí...



Hace una semana te sugerí lo mismo con tablas Paradox: mensaje #2, en la línea:
Cita:
For i := 1 to ViejaTablaParadox.Fields.Count -1 do // i=1 para respetar el campo_ID
Y en otro hilo posterior lo mismo hace oscarac: mensaje #2, en la línea:
Cita:
for I := 1 to query2.fields.Count - 1 do


No es muy eficiente por que realiza una asignación innecesaria, pero como sospecho que la ubicación de 'NUM_REG' puede no ser la primera...
Código Delphi [-]
var
  i: Integer;
  NumReg: Integer;
begin
  Query1.Open;
  IBTable1.Open;
  NumReg:= 1;
  while not Query1.Eof do
  begin
    IBTable1.Append;
    for i:= 0 to Query1.FieldCount -1 do
      IBTable1.Fields[i].Value:= Query1.Fields[i].Value;
    IBTable1.FieldByName('NUM_REG').AsInteger:= NumReg;
    IBTable1.Post;
    Query1.Next;
    Inc(NumReg);
  end;
  IBTable1.Close;
  Query1.Close;
end;
El código funciona. (probado)



Cita:
solo quisiera saber si ya le meti un tye except, que puedo hacer para que no se pare mi proceso salte este registro o error y siga insertando mas registros
Un consejo: No utilices try/except para enmascarar excepciones, es muy mala práctica.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 18-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 19
pmtzg Va por buen camino
hola mi estimado ecfisa
antes que nada gracias por tu tiempo y tu paciencia
mira esta es la estructura de mi tabla :

Código Delphi [-]
CREATE TABLE FACT04 (
    NUM_REG     INTEGER NOT NULL,
    TIP_REG     VARCHAR(1),
    TIP_DOC     VARCHAR(1),
    CVE_DOC     VARCHAR(7),
    CVE_CLPV    VARCHAR(5),
    MOSTRA      VARCHAR(1),
    STATUS      VARCHAR(1),
    CVE_VEND    VARCHAR(5),
    CVE_PEDI    VARCHAR(7),
    FECHA_DOC   TIMESTAMP,
    FECHA_ENT   TIMESTAMP,
    FECHA_VEN   TIMESTAMP,
    CAN_TOT     DOUBLE PRECISION,
    IMP_TOT1    DOUBLE PRECISION,
    IMP_TOT2    DOUBLE PRECISION,
    DES_TOT     DOUBLE PRECISION,
    DES_FIN     DOUBLE PRECISION,
    COM_TOT     DOUBLE PRECISION,
    OBS_COND    VARCHAR(25),
    OBS_ENVI    INTEGER,
    OBS_FACT    INTEGER,
    OBS_CLIE    INTEGER,
    NUM_PART    SMALLINT,
    NUM_ALMA    SMALLINT,
    ACT_CXC     VARCHAR(1),
    ACT_COI     VARCHAR(1),
    BLOQ        SMALLINT,
    CVE_CONS    VARCHAR(5),
    STRNOGUIA   VARCHAR(15),
    STRMODOENV  VARCHAR(20),
    DOCANTSIG   VARCHAR(9),
    NUM_MONED   VARCHAR(2),
    TIPCAMB     DOUBLE PRECISION,
    NOPAGOS     SMALLINT,
    CVE_ZONA    VARCHAR(6),
    TIPO_FLET   VARCHAR(5),
    COSTOFLET   DOUBLE PRECISION,
    IMPUEFLET   DOUBLE PRECISION,
    RETENFLET   DOUBLE PRECISION,
    FECHA_ENV   TIMESTAMP,
    FECHAELAB   TIMESTAMP,
    USUARIO     SMALLINT,
    IMP_TOT3    DOUBLE PRECISION,
    IMP_TOT4    DOUBLE PRECISION,
    PRIMERPAGO  DOUBLE PRECISION,
    RFC         VARCHAR(15),
    CTLPOL      INTEGER,
    ESCFD       VARCHAR(1),
    AUTORIZA    INTEGER,
    FOLIO       INTEGER,
    SERIE       VARCHAR(10),
    TIPDOCANT   VARCHAR(1),
    AUTOANIO    VARCHAR(4)
);




/******************************************************************************/
/*                                Primary Keys                                */
/******************************************************************************/

ALTER TABLE FACT04 ADD PRIMARY KEY (NUM_REG);


/******************************************************************************/
/*                                  Indices                                   */
/******************************************************************************/

CREATE UNIQUE INDEX FACF04 ON FACT04 (TIP_DOC, FECHA_DOC, CVE_DOC);
CREATE UNIQUE INDEX FACT04 ON FACT04 (TIP_DOC, CVE_DOC);
CREATE UNIQUE INDEX FCLI04 ON FACT04 (CVE_CLPV, TIP_DOC, CVE_DOC);


aqui te dira como es la tabla y te comento partieron en 2 esta tabla ahora la tengo que unir para sacar algunos reportes pero te soy muy honesto aqui si me atore por el error que te comente hice los cambios que me sugeriste pero aun no tengo resultado

ojala pueda seguir contando con tus comentarios

nota: no es la unica tabla todavia tengo otra donde estan los auxiliares de esta y tengo mas de 1 millon de registros

mil gracias
Responder Con Cita
  #4  
Antiguo 18-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pmtzg.

Cita:
CREATE UNIQUE INDEX FACF04 ON FACT04 (TIP_DOC, FECHA_DOC, CVE_DOC);
CREATE UNIQUE INDEX FACT04 ON FACT04 (TIP_DOC, CVE_DOC);
CREATE UNIQUE INDEX FCLI04 ON FACT04 (CVE_CLPV, TIP_DOC, CVE_DOC);
Ha... ahora sí.

El problema no te lo dá el índice primario sino los que has declarado como UNIQUE y al estar así declarados, no pueden existir dos valores iguales en dichos campos.

Tendrías que revisar los valores duplicados o quitar esa declaración para realizar la copia.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 18-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 19
pmtzg Va por buen camino
asi es mi estmado ecfisa
pero una pregunta mas aprovecando tu bondad

fijate que estas tablas de paradox ya estan definidas, yo trabajo con ellas con una copia

cuando las creo las creo la tabla e index asi :

Código Delphi [-]
IBTable1.FieldDefs.Assign(table1px.FieldDefs);
IBTable1.IndexDefs.Assign(table1px.IndexDefs);
IBTable1.CreateTable;

tomo la estructura de la tabla de paradox y creo mi tabla en firebird
si al crear mi tabla omito esto:

Código Delphi [-]
IBTable1.IndexDefs.Assign(table1px.IndexDefs);

no creo los index en donde se declara el UNIQUE

si despues de crear mi tabla como te mostre y edito para la creación de los
index con que me recomiendas tu crearlos

lo intente con IBscripts, pero me marca error
gracias
Responder Con Cita
  #6  
Antiguo 18-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pmtzg.

En Firebird, para agregar una Key UNIQUE:
Código SQL [-]
ALTER TABLE TUTABLA ADD CONSTRAINT PK_TUTABLA_UNIQUE1 UNIQUE(TU_CAMPO)

Para quitarla:
Código SQL [-]
ALTER TABLE TUTABLA DROP CONSTRAINT PK_TUTABLA_UNIQUE1

Pero si las key UNIQUE tienen que quedar y tenés repetición de valores en los campos, no te va a permitir hacerlo. Si es 'unico' no puede haber duplicidad.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 18-08-2011 a las 19:07:04.
Responder Con Cita
  #7  
Antiguo 18-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 19
pmtzg Va por buen camino
fijate que usare IBSQL1 para craEAR MI INDEX

lo meto a un ciclo

creo la primera tabla ... ok
creo su index IBSQL! ... ok

Código Delphi [-]
IBSQL1.sql.text :='create index CCLIEDX2 on clie04 (cclie); ';

elijo otra tabla

creare la tabla2 pero al momento de decirle

Código Delphi [-]
IBtable1.createtable ;

me lanza el error haciendo referencia de anterior index que cree, ejemplo

Código Delphi [-]
unsuccessful metadata update unknown columns in index  CCLIEDX2

pero antes ya habia declarado este parrafo:

Código Delphi [-]
IBSQL1.sql.text :=' '+
'CREATE  INDEX FACF04 ON FACT04 (TIP_DOC, FECHA_DOC, CVE_DOC); '+
' CREATE  INDEX FACT04 ON FACT04 (TIP_DOC, CVE_DOC);  '+  
' CREATE  INDEX FCLI04 ON FACT04 (CVE_CLPV, TIP_DOC, CVE_DOC); ';


que hice mal , si la primera tabla se creo y su index muy bien hasta vacie los datos de paradox a firebird

tendria que decirle algo mas a mi codigo para que no me pase esto ???
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
Union de Tablas MaMu SQL 4 22-08-2008 23:14:47
Union de 3 tablas en una Base de Datos Access jon_g461 Conexión con bases de datos 3 08-04-2008 20:30:31
ayuda con union de tablas en php?? foetus PHP 2 17-12-2007 14:50:02
La Unión Europea puso en marcha un plan para grabar todas las comunicaciones ptt Noticias 3 24-11-2005 22:31:51
sería mucho pedir??? (union de tablas) ELINK Firebird e Interbase 5 05-05-2005 01:37:55


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


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