Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-06-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
ESDMssError?????

Saludos a todos
Estoy tratando de captura el mismo error de "duplicate key" pero no logro conseguirlo... estoy utilizando SQL server y delphi 5.
el problema es que E no es EDBEngineError, el classname que me muestra es ESDMssError pero tampoco logro encontrar información sobre ese punto.
El error se refiere a "duplicate key" con el número de error 2601 el cuál si he encontrado información... en fin, si alguien tiene alguna pista de hacia donde dirigirme se los agradecría mucho.

este es el código que tengo:
Código Delphi [-]
try
ExecSQL; //Instrucción insert
except on E:Exception do begin
ShowMessage('Error Tipo: '+E.ClassName+', Con el mensaje: '+E.Message);
If (E is EDBEngineError) then //¿nunca es verdadero?
messagebox(handle,'No se puede guardar','Error',MB_ICONERROR);
end; //Fin except
end; //Fin try

Gracias y saludos a todos.
__________________

Responder Con Cita
  #2  
Antiguo 20-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ContraVeneno
el problema es que E no es EDBEngineError, el classname que me muestra es ESDMssError pero tampoco logro encontrar información sobre ese punto.
Pues no tendrías más que sustituir EDBEngineError por ESDMssError:

Código Delphi [-]
on E:ESDMssError do
begin

...

end;

// Saludos
Responder Con Cita
  #3  
Antiguo 20-06-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Si, yo tambien pense lo mismo... pero delphi no conoce a ESDMssError; al compilar marca(undeclared identifier). Pense que me haría falta una unidad pero hasta ahora ningúna búsqueda a dado resultado con la palabra 'ESDMssError'....
solo se que E.ClassName=ESDMssError pero no logro encontrar información referente a esto...
__________________

Responder Con Cita
  #4  
Antiguo 21-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Creo que podrías utilizar el Browser de Delphi.

Abre tu proyecto y selecciona View|Browser. Da click derecho en cualquier parte del browser y selecciona Properties y ahí, en Browser Scope (abajo a la derecha) marca el botón All Symbols. Luego selecciona la ficha Globals del browser y recorre hasta la rama de variables y constantes y busca ahí a ver si está el símbolo. En el panel derecho deberá aparecer la unidad en donde está declarada y será la que tienes que incluir.

// Saludos
Responder Con Cita
  #5  
Antiguo 21-06-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Antes que nada, gracias por tu tiempo Roman....
Busque en globals y efectivamente, ahi viene listado ESDMssError, pero no me muestra niguna referencia como si lo hace con todos los componentes normales de delphi, incluso aparece EDBEngineError y me muestra su referencia a DBTables. Incluso encontre que junto a EDBEngineError esta ESDEngineError de donde se desprende ESDMssError.

Lo que sucede es porque estoy utilizando unos componentes de la paleta SQLDirect (Son los que utilizaban cuando empezé a trabajar en esta empresa y no se como los obtuvieron.) que de ahi es de donde vienen las letras SD.
Buscando la información de esta paleta me encontre con la solución; que era tan simple que me sorpendí. Tenía que agregar la unidad 'SDEngine' y el código queda así:
Código Delphi [-]
try
 ExecSQL; //Instrucción insert
{Tambien podría ser E:ESDEngineError o E:ESDMssError 
dependiendo del rango de errores que se quieran capturar}
except on E:Exception do 
 if (E is ESDEngineError) then
  with ESDEngineError(E) do
   if ErrorCode = 2601 then
    MessageBox(frmInicial.Handle,'Llave duplicada.','Error',MB_ICONERROR);
end; //Fin try

Gracias Roman por la referencia.

Saludos
__________________


Última edición por ContraVeneno fecha: 21-06-2005 a las 17:07:53. Razón: Solucionado
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


La franja horaria es GMT +2. Ahora son las 01:58:02.


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