Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2010
MikyVato MikyVato is offline
Miembro
 
Registrado: mar 2005
Posts: 39
Poder: 0
MikyVato Va por buen camino
Red face Excepción en conexión MySQL

Hola amigos, tengo un pequeño problema, hice una aplicacion en Delphi que se conecta con un servidor de DB MySQL el cual se encuentra en un Hosting, quiero poner una excepción al código en caso de que la conexión a internet falle pero no me toma estas excepciones aqui les dejo el codigo espero puedan ayudarme. Desde ya gracias...

Código:
begin
  //obtengo el ultimo ID da la tabla externa
  idlocal := '0';
  QidExterno.Active := False;
  QidExterno.SQL.Clear;
  QidExterno.SQL.Text := 'select * from cliente order by id desc';
  try
    QidExterno.Active := True;
    idlocal := QidExterno.Fields[0].AsString;
  finally
    //obtengo los registros pendientes de subir de la Tabla Local
    if StrToInt (idlocal) <> 0 then
      begin
        QPrincipal.Active := False;
        QPrincipal.SQL.Clear;
        QPrincipal.SQL.Text := 'select * from cliente where id > '''+idlocal+'''';
        QPrincipal.Active := True;

        while (not QPrincipal.Eof) do
          begin
            idlocal := QPrincipal.Fields[0].AsString;
            nom := QPrincipal.Fields[1].AsString;
            loc := QPrincipal.Fields[2].AsString;
            try
              QInsercion.SQL.Clear;
              QInsercion.SQL.Text := 'INSERT INTO cliente (Id,nombre,localidad) VALUES ('''+idlocal+''','''+nom+''','''+loc+''')';
              QInsercion.ExecSQL;
            finally
              QPrincipal.Next;
              LTiempo.Caption := ' '+DateToStr (Date)+'  '+TimeToStr (Time)+'';
            end;
          end;
      end
    else
      LTiempo.Caption := 'No se subieron datos!!';
  end;
end;
Puntualmente no me funcionan las estruturas

Código:
try
   //instrucciones
except
   //instrucciones
end;
como tampoco la estructura

Código:
try
   //instrucciones
finally
   //instrucciones
end;
Responder Con Cita
  #2  
Antiguo 12-08-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Para saber si te funcionan las estructuras (en concreto try..except), habría que saber cómo las estás incluyendo en tu código, de todas formas, me parece que hay un error en el diseño.

Por defnición un Try..finally, hace que si falla lo que hay en el Try, se ejecute forzosamente lo que hay en el Finally.

No me acaba de quedar claro porqué tienes en el Finally ese código. Creo que no es la estructura adecuada para este caso. Creo que bastaría con algo así:

Código Delphi [-]
  try
    QidExterno.Active := True;
    idlocal := QidExterno.Fields[0].AsString;
  Except
    // Mostrar el error o guaradarlo si hace falta
    //...
    // adegurarnos de que vale 0 (está más arriba)
    idLocal := 0;
  end;
  //obtengo los registros pendientes de subir de la Tabla Local
  if StrToInt (idlocal) <> 0 then
    ...

El código que hay en el Finally no cumple la premisa de que se deba ejecutar siempre, puesto que si hay error, tú mismo no lo ejecutas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 12-08-2010
MikyVato MikyVato is offline
Miembro
 
Registrado: mar 2005
Posts: 39
Poder: 0
MikyVato Va por buen camino
Si es así la estructura esta errada, es el resultado después de varios intentos, corregi como sugieres pero nada, pruebo la aplicación pero en caso de no tener conexión a Internet se detiene con un fatal error al intentar conectar con la DB...

No entiendo porque ejecuta las lineas que están dentro del try y si da error detiene la aplicación, lo correcto seria que ejecute las lineas que estan dentro del except
Estoy utilizando Delphi7 habrá que configurar algo para tener en cuenta las excepciones??. los componentes que utilizo son el Query de la paleta BDE.
Responder Con Cita
  #4  
Antiguo 13-08-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Puedes poner el código tal como lo has dejado?

Desactiva en Las opciones de Debug, "Debug on language exceptions"; A ver si es por eso que te están saltando los errores.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 14-08-2010
MikyVato MikyVato is offline
Miembro
 
Registrado: mar 2005
Posts: 39
Poder: 0
MikyVato Va por buen camino
Listo encontré la solución!!!, lo que hice fue Click en Menu Tools/Debuger Option y en la pestaña general destilde la Opción integrated debugging y WALA!!! toma las Excepciones.

Mil gracias Neftali por tu buena voluntad me sirvió de mucho tu ayuda.

Ahora paso al siguiente inconveniente ya que esto no se termina aquí jeje, en la DB que se encuentra colgada en Internet tengo dos tipos de datos que me están dando dolor de cabeza uno es DATETIME y el otro TIMESTAMP yo recibo originalmente los datos de una DB local guardo los datos en una variable STRING y lo paso a la DB en internet pero solo llegan 0000-00-00 00:00:00 como hago??
Responder Con Cita
  #6  
Antiguo 17-08-2010
MikyVato MikyVato is offline
Miembro
 
Registrado: mar 2005
Posts: 39
Poder: 0
MikyVato Va por buen camino
Bueno solucione el problema de la Fecha lo unico que hice es configurar la fecha y hora en mi maquina como lo tiene el MySQL y ya!!...
Gracias a Todos....
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
conexion con mysql srangel Conexión con bases de datos 4 07-02-2007 00:09:10
Conexion de MySQL.. Diegochr MySQL 6 29-01-2007 04:25:12
Conexion con MySQL noshy SQL 5 02-08-2006 01:17:29
Conexion con MySQL Esau Conexión con bases de datos 2 27-04-2006 11:25:30
excepcion en conexion a Interbasebase el_barto Conexión con bases de datos 5 03-06-2005 22:42:52


La franja horaria es GMT +2. Ahora son las 06:47:47.


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