Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-12-2008
diegoghisolfi diegoghisolfi is offline
Registrado
 
Registrado: feb 2007
Posts: 6
Poder: 0
diegoghisolfi Va por buen camino
Exclamation ADO - BDE Problemas

Código SQL [-]


Quería consultar si alguien se encontro con el mismo problema:
la siguiente consulta la realizo con el BDE
//select T1.TURFEC, T1.PROCOD, T1.CODPAC
//, T5.OSODES
//, T4.PRONOM
//, T2.APELLI, T2.NOMBRE, T2.DIRECC, T2.LOCALI, T2.CODSEX
//, T3.DIAGR1, T3.DIAGR2
//from (("\SF\DBF\SFATUR.dbf" T1 left join "\MEDI\FILES\MPACIE.dbf" T2 ON (T2.CODPAC=T1.CODPAC))
//left join "\MEDI\FILES\HCLINI.dbf" T3 ON ((T3.CODPAC=T1.CODPAC) and (T1.TURFEC=T3.FECHAC)))
//inner join "\SF\DBF\SFAPRO.dbf" T4 ON (T4.PROCOD=T1.PROCOD)
//inner join "SF\DBF\SFAOSO.dbf" T5 ON (T5.OSOCOD=T1.OSOCOD)
//where (T1.TURFEC>"01/01/08") and (T1.TURFEC<"01/31/08")
//order by T1.PROCOD, T1.TURFEC, T1.CODPAC

y funciona barbaro pero ademas necesito calcular la Edad de un paciente en funcion de su fecha de nacimiento la cual no encontre forma de hacerlo con el BDE y si la puedo realizar con ADO con la siguiente consulta
Responder Con Cita
  #2  
Antiguo 16-12-2008
diegoghisolfi diegoghisolfi is offline
Registrado
 
Registrado: feb 2007
Posts: 6
Poder: 0
diegoghisolfi Va por buen camino
Exclamation complotando la consulta

Código SQL [-]

Quería consultar si alguien se encontro con el mismo problema:
la siguiente consulta la realizo con el BDE
//select T1.TURFEC, T1.PROCOD, T1.CODPAC
//, T5.OSODES
//, T4.PRONOM
//, T2.APELLI, T2.NOMBRE, T2.DIRECC, T2.LOCALI, T2.CODSEX
//, T3.DIAGR1, T3.DIAGR2
//from (("\SF\DBF\SFATUR.dbf" T1 left join "\MEDI\FILES\MPACIE.dbf" T2 ON (T2.CODPAC=T1.CODPAC))
//left join "\MEDI\FILES\HCLINI.dbf" T3 ON ((T3.CODPAC=T1.CODPAC) and (T1.TURFEC=T3.FECHAC)))
//inner join "\SF\DBF\SFAPRO.dbf" T4 ON (T4.PROCOD=T1.PROCOD)
//inner join "SF\DBF\SFAOSO.dbf" T5 ON (T5.OSOCOD=T1.OSOCOD)
//where (T1.TURFEC>"01/01/08") and (T1.TURFEC<"01/31/08")
//order by T1.PROCOD, T1.TURFEC, T1.CODPAC

y funciona barbaro pero ademas necesito calcular la Edad de un paciente en funcion de su fecha de nacimiento la cual no encontre forma de hacerlo con el BDE y si la puedo realizar con ADO con la siguiente consulta 
size="1">size="1"> 
SELECT turpac,
IIF(MONTH(turfna) > MONTH(turfec), YEAR(turfec)-YEAR(turfna) - 1,
IIF(MONTH(turfec) = MONTH(turfna) AND DAY(turfna) > DAY(turfec), 
YEAR(turfec)-YEAR(turfna) - 1, YEAR(turfec)-YEAR(turfna)))as Edad FROM sfatur
 
el problema que tengo es que no puedo realizar la union de la consultas ni tampoco poder hacer todo en el BDE o en ADO.
Alguien se encontro con este problema o tiene alguna idea de como resolverlo.
 
Saludos
 
Diego
PD: disculpen pero el primer post salio cortado


Responder Con Cita
  #3  
Antiguo 16-12-2008
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
La base de datos es en access? si es asi, puedes hacer una consulta en access el equivalente a una vista al estilo ADO, pero la visualizarias en el BDE
Responder Con Cita
  #4  
Antiguo 16-12-2008
diegoghisolfi diegoghisolfi is offline
Registrado
 
Registrado: feb 2007
Posts: 6
Poder: 0
diegoghisolfi Va por buen camino
No las bases son tablas planas .DBF de FoxPro pero de dos programas diferentes que necesito realizar consultas relacionadas.
Responder Con Cita
  #5  
Antiguo 16-12-2008
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Bueno la verdad nunca utilize el BDE pero creo que trae el driver nativo para dbf, pero si en lugar de eso, las abres por BDE y por ODBC debe ser igual que con ADO
Responder Con Cita
  #6  
Antiguo 17-12-2008
diegoghisolfi diegoghisolfi is offline
Registrado
 
Registrado: feb 2007
Posts: 6
Poder: 0
diegoghisolfi Va por buen camino
Unhappy

sabes que mi pensamiento fue lineal como el tuyo pero en la practica no puedo hacer que funcione.
En ADO no me toma la forma de direccionar en la consulta la parte
from c:\base\mitabla.dbf T y la necesito implementar si o si porque la consulta utiliza tablas que estan en bases diferentes cosa que el BDE si me permite y ADO no o no lo se implementar. Y bueno para el calculo de la edad en funcion de la fecha de nacimiento tampoco pude hacerlo en el BDE y si en ADO.
Responder Con Cita
  #7  
Antiguo 03-01-2009
Avatar de tvaly
tvaly tvaly is offline
Miembro
 
Registrado: dic 2007
Ubicación: Puerto Iguazu, Misiones, Argentina
Posts: 23
Poder: 0
tvaly Va por buen camino
Hola, no quiero ser fatalista, pero segun tengo entendido ADO no fue desarrollado para soportar DBF. Te sufieron que consultes un poco mas en san google... pero es lo que yo se y la verdad te recomendarias que pases tus tablas a un motor mas confiable (esto ya te lo digo por experiencia propia)
Saludos
Responder Con Cita
  #8  
Antiguo 13-01-2009
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Cita:
Empezado por diegoghisolfi Ver Mensaje
sabes que mi pensamiento fue lineal como el tuyo pero en la practica no puedo hacer que funcione.
En ADO no me toma la forma de direccionar en la consulta la parte
from c:\base\mitabla.dbf T y la necesito implementar si o si porque la consulta utiliza tablas que estan en bases diferentes cosa que el BDE si me permite y ADO no o no lo se implementar. Y bueno para el calculo de la edad en funcion de la fecha de nacimiento tampoco pude hacerlo en el BDE y si en ADO.
Hola diegoghisolfi

Para las DBF con ADO utilizo ZEOS (la verdad es que para todo ) y en el TZConnection le paso la cadena de conexión así:
Código Delphi [-]
{
  configurar la conexión mediante ADO
  *** cadena de conexión para datos locales en EJECUCIÓN
  Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\DELPHI-7\FICHEROS\TABLAS;Extended Properties=dBASE IV;Persist Security Info=False;Mode=Read;User ID=Admin;Password=;

  *** DirProy es el directorio del programa, se saca con GetCurrentDir
}
  with ZConnection do begin
       Connected:= false;
       HostName := '';
       User     := '';
       Password := '';
       Protocol := 'ado';
       Port     := 0;
       Database := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                   'Data Source=' + DirProy+'\FICHEROS\TABLAS' + ';' +
                   'Extended Properties=dBASE IV;' +
                   'Persist Security Info=False;' +
                   'Mode=Read;' +
                   'User ID=Admin;' +
                   'Password=;';
  end;
Luego no tienes más que enlazar un TZQuery al TZConnection y en su propiedad SQL le pones la consulta que necesites (referenciando a la tabla del directorio que pasaste al TZConnection)

Saludos
salvica
Responder Con Cita
  #9  
Antiguo 13-02-2009
diegoghisolfi diegoghisolfi is offline
Registrado
 
Registrado: feb 2007
Posts: 6
Poder: 0
diegoghisolfi Va por buen camino
Muchas Gracias

Muchas gracias, disculpen la demora pero andube con diferentes cosas al mismo tiempo y la que se traba la voy pateando.
La solución que encontre fue generar un tabla temporal mixta. Osea genero la tabla temporal cargo los datos que puedo consultar con el BDE y luego le agrego los datos consultados por el ADO.

Voy a probar la alternativa propuesta por Salvica
Saludos
Diego
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


La franja horaria es GMT +2. Ahora son las 20:23:28.


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