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 23-11-2012
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
OK, ya entendido. Muchisimas Gracias por la ayuda.

Última edición por angel.sosa fecha: 23-11-2012 a las 21:43:26.
Responder Con Cita
  #2  
Antiguo 23-11-2012
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
solo me resta ingresar 2 parametros fecha. que tengo en un Par de DateTimePiker los cuales pretendo ingresar dentro de un IBQuery3,
el problema es que el sql solo me reconoce el formato dd.mm.yyyy con el Edit2.Text y al querer sustituilo por el DataTimePiker.
me marca error "Token UKNOWn" pues al parecer mi version de DELphi solo me reconoce que le pase la fecha con punto ejemplo 23.11.2012 me manda error cuando entra 23/11/2012 pues el datatimepiker solo me arroja la fecha al leerlo con las "/"

este codigo pedazo de codigo es cuando uso el Text y si funciona.

Código Delphi [-]
IBQuery1.SQL.Add('on VE.cliente_id = cli.cliente_id  AND VE.fecha >='+Char(39)+Edit2.Text+Char(39));

lo pretendo sustituir con este codigo del DataTimePiker pero es cuando me marca el error.
el codigo es:
Código Delphi [-]
IBQuery1.SQL.Add('on VE.cliente_id = cli.cliente_id  AND VE.fecha >='+Char(39)+quotedstr(FormatDateTime('DDMMYYYY',DateTimePicker1.Date))+Char(39));

Última edición por angel.sosa fecha: 23-11-2012 a las 22:12:20.
Responder Con Cita
  #3  
Antiguo 23-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Te aconsejo que uses parámetros, así nunca tendrás problemas de ese tipo, según tu ejemplo:

Código Delphi [-]
query.sql.text:='select ...... on ve.cliente_id=cli.cliente_id and ve.fecha >= :lafecha';
query.parambyname('lafecha').asdatetime := datetimepicker1.date;
query.open;
Responder Con Cita
  #4  
Antiguo 12-12-2012
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
no puede adecuar tu respuesta Casimiro, pero tomando tu sugerencia, busque como resolverlo.
en realidad no pude hacer uso del método que la consulta es sumamente larga y mejor sustituí, las "." por "/". pues se me facilito de esta forma porque mi cosulta es bastante larga.

Código Delphi [-]
IBQuery1.SQL.Add('select LC.nombre_cliente, ...............................
IBQuery1.SQL.Add('ON CLI.cliente_id = C.cliente_id ');
IBQuery1.SQL.Add('inner join doctos_ve VE ');
IBQuery1.SQL.Add('on VE.cliente_id = cli.cliente_id  AND VE.fecha >='+Char(39)+(StringReplace(DateToStr(DateTimePicker1.Date),'/','.',[rfReplaceAll]))+Char(39)+' ');
IBQuery1.SQL.Add(' inner join condiciones_pago CPG ');
IBQuery1.SQL.Add('ON CPG.cond_pago_id = VE.cond_pago_id ');
IBQuery1.SQL.Add('inner JOIN vendedores ven ');
................................
perdon por no dar la solucion antes. andaba terminando el proyectito
Responder Con Cita
  #5  
Antiguo 12-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Cita:
Empezado por angel.sosa Ver Mensaje
no puede adecuar tu respuesta Casimiro...
Hola Angel.

Me alegra que hayas podido resolverlo y gracias por ponernos la solución.

Pero creo mas adecuado el modo que te sugirió Casimiro:
Código Delphi [-]
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select LC.nombre_cliente, ...');
    SQL.Add('ON CLI.cliente_id = C.cliente_id ');
    SQL.Add('inner join doctos_ve VE ');
    SQL.Add('on VE.cliente_id = cli.cliente_id  AND VE.fecha >= :PFECHA');
    SQL.Add('inner join condiciones_pago CPG ');
    SQL.Add('ON CPG.cond_pago_id = VE.cond_pago_id ');
    SQL.Add('inner JOIN vendedores ven ');
    ParamByName('PFECHA').AsDate := DateTimePicker1.Date;
    Open;
  end;
Es mucho más seguro, entendible y menos propenso a equivocos.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 14-12-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Y aunque lo creo innecesario, tambien podes:
Código:
IBDatabase1 <--+- IBTransaction1 <-- IBQuery1
               |
               +- IBTransaction2 <-- IBQuery2
               |
               +- IBTransaction3 <-- IBQuery3
               ...
Saludos.
Pues yo diría que esta opción es quizá más sana y segura para evitar conflictos sobre las transacciones. Por ejemplo, como cuando se tiene el error de que ya existe una transacción abierta.
Con esta forma uno puede dejar abierto varias transacciones individualmente en cuanto necesite. No está demás aclarar que tampoco es para dejarlas activas todo el tiempo, pero con esta manera si uno se es ordenado puede controlar mejor cada transacción posible de hacer en el sistema y tomar las acciones para el caso.
Pregunta: ¿Cómo le haces para detectar y discrimar cual de los tantos Datasets ligado a una única transacción es quien está en funciones y acaparando el uso de dicha transacción?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 14-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Delphius Ver Mensaje
Pregunta: ¿Cómo le haces para detectar y discrimar cual de los tantos Datasets ligado a una única transacción es quien está en funciones y acaparando el uso de dicha transacción?
Código SQL [-]
ibquery3.transaction.commit;
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
Usar consulta para varios formularios jlrdz Conexión con bases de datos 6 05-02-2011 02:16:51
IBDataBase Timeout pabloc Conexión con bases de datos 0 20-06-2008 08:18:37
¿¿ como usar el tag con varios checkbox ?? gaston260 Varios 7 21-04-2008 06:19:02
usar un procedure en varios formularios adonai Varios 21 30-03-2007 17:42:34
Duda sobre el IBQuery e IBTABle cual usar?? (VIH)Lestat Conexión con bases de datos 17 26-06-2005 03:16:10


La franja horaria es GMT +2. Ahora son las 08:41:03.


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