![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
ayuda excepciones
Buenos días, perdon pero estoy comenzando con delphi, y las excepciones no las tengo muy claras, el problema es q no se en que estoy fallando, y siempre me genra este error,-...
Project bas.exe raised exception class EIBInterBaseError with message 'violatio of PRIMARY or KEY UNIQUE constraint "PK_AGENDA" ......... Si alguien me puede ayudar y decir como hago para que la excepcion o me frene el programa y continue ya que si la llave esta duplicada no debe cargarlo y nada mas,, muchas gracia spor la ayuda.. var Form1: TForm1; f : TextFile; Nom,Dir,Ciu,Tel,rec1,u,s,trama: AnsiString; a,rec: Integer; cadena,re,sLinea: String; i: Integer; implementation uses base; {$R *.dfm} procedure TForm1.Botton1Click(Sender: TObject); begin AssignFile (f,'c:\bases\base.txt'); Reset (f); Readln(f,cadena); CloseFile (f); re:=AnsiMidStr(cadena, 7, 8); TrimRight( re); i:= StrToInt(re); while FileExists ('c:\bases\'+cadena+'.txt') do begin if FileExists('c:\bases\'+cadena+'.txt') then begin AssignFile (f,'c:\bases\'+cadena+'.txt'); Reset (f); while not Eof( F ) do begin ReadLn( F, sLinea ); trama:=sLinea; Rec1:=AnsiMidStr(trama, 1, 8); Nom:=AnsiMidStr(trama, 9, 10); Dir:=AnsiMidStr(trama, 19, 10); Ciu:=AnsiMidStr(trama, 29, 10) ; Tel:=AnsiMidStr(trama, 39, 10) ; u := StringReplace(Rec1, ' ', '', [rfReplaceAll]); TrimRight(u); Form1.IBTable1.Insert; // Ponemos la tabla en modo insercion Form1.IBTable1.FieldbyName('Recibo').AsInteger := StrToInt(u); Form1.IBTable1.FieldbyName('Nombre').AsString := Nom; // Form1.IBTable1.FieldbyName('Direccion').AsString := Dir; // Form1.IBTable1.FieldbyName('Ciudad').AsString := Ciu; // Insertamos Form1.IBTable1.FieldbyName('Telefono').AsString := Tel; // try Form1.IBTable1.Post; // Guardamos los cambios. except on E: EIBInterBaseError do begin case E.IBErrorCode of 335544665: else raise; end; end; end; //************************************ end; CloseFile (f); //************************************* i:=i+1; AssignFile (f,'c:\bases\base.txt'); Rewrite( F ); WriteLn(f,'nombre'+IntToStr(i)); CloseFile (f); end else //if begin ShowMessage('No hay datos para cargar'); close; end; //******************************************** AssignFile (f,'c:\bases\base.txt'); Reset (f); Readln(f,cadena); CloseFile (f); end; //******************************************** end; procedure TForm1.Button5Click(Sender: TObject); begin close end; end. |
|
#2
|
||||
|
||||
|
Hola, yevabas, bienvenido a clubdelphi, te aconsejo que leas nuestra guía de estilo para entendernos mejor, muchas gracias por tu colaboración.
p.d. Ese mensaje de error indica que ya tienes una clave igual a la que intentas dar de alta, o sea, que estaría repetida, por eso no te deja.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#3
|
||||
|
||||
Aunque no entiendo claramente cuál es el problema, con la estructura que tienes, el sistema no debería bloquearse. ![]() ![]() o tal vez lo que te haga falta es utilizar transacciones...
__________________
|
|
#4
|
|||
|
|||
|
excepciones
Hola contraVeneno
gracias por contestarme y tan rapido ven te explico q estoy haciendo a ver si me entiendes. lo q estoy tratando de hacer es cargar una base con datos de unos archivos planos, el archivo estaría así; 1 william carrera1 bogota 1111111 2 carlos calle2 cali 2222222 3 fernando diagonal medellin 3333333 el primer dato es la llave primaria para la base, entonces estos datos están en un archivo.txt, pero si por alguna razón se repite uno de estos datos en otro archivo o se vuelve a cargar por error este archivo, pues no se carga porq la clave ya existe, entonces no se como evitar q cuando suceda esto y me frene el programa ya copie tu código y me sale lo mismo, no se si es que estoy equivocado en la excepción q se esta generando o que pasa, lo siento pero lo de transacciones no se nada, como te dije hasta ahora son mis primeros pinos con delphi, pero necesito hacer un programa para cargar estos datos y tenerlos en una base y muchas gracias por la colaboración q me estas prestando. |
|
#5
|
||||
|
||||
|
Cita:
![]() sigo sin captar que tratas de decir... ¿qué quieres evitar? ¿quieres que continue con el siguiente registro o que se detenga por completo?
__________________
|
|
#6
|
|||
|
|||
|
buenos dias
Disculpa por no ser tan claro. Correcto quiere que verifique el siguiente registro a ver si ya esta cargado o no, no quiero que frene el proceso sino continué, en este momento sale el error y la aplicación se frena mostrando un error de duplicación de llave, y no quiero que muestre ningún tipo de error de duplicación de llave primaria sino que termine de revisar todos y cargue los que falte y sino falta nada pues no haga nada pero no muestre errores que no se quede ahí y me saque de la aplicación sino que quede listo para continuar cuando uno le de clic en el botón insertar. Espero haber sido un poco mas claro y gracias muchas gracias de verdad |
|
#7
|
||||
|
||||
|
en lugar de poner "Raise" para que te muestre el mensaje del error... utilizar ShowMessage o un cuadro de diálogo.
Con esto te muestra el mensaje, pero no lo hace como una excepción y debería continuar con el siguiente proceso.
__________________
Última edición por ContraVeneno fecha: 18-11-2010 a las 21:23:33. |
|
#8
|
|||
|
|||
|
gracias por tu ayuda ya esta funcionando no se porq antes no lo hacia.
estaría cometiendo algún error pero ya quedo como quería de nuevo muchas gracias por el tiempo que me dedico y por la gran ayuda prestada... |
|
#9
|
||||
|
||||
|
Pues si solo cambiaste el "raise" por un mensaje... pues era eso...
El detalle es que la instrucción "Raise" te genera la excepción en el programa y este le da todo el tratamiento que se le da a un error. Al cambiarlo por un mensaje, pues es solo eso, un mensaje, no hay error y el programa continua.
__________________
|
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Duda Sobre Excepciones - Propagar Excepciones entre los formularios | Neeruu | Varios | 2 | 26-02-2010 20:36:50 |
| Excepciones | adpa | OOP | 5 | 14-12-2005 15:45:45 |
| Excepciones | Acker | Tablas planas | 6 | 06-08-2005 15:22:18 |
| excepciones!!!!! | hanna33 | OOP | 3 | 24-05-2005 17:10:10 |
| Ayuda con Manejo de Excepciones | buffygcs | SQL | 2 | 21-04-2005 17:52:09 |
|