Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-10-2012
Avatar de Chogo
Chogo Chogo is offline
Miembro
 
Registrado: may 2005
Ubicación: Pto Cortes,Honduras,C.A.
Posts: 148
Poder: 19
Chogo Va por buen camino
accesar a funciones de usuarios en modulos de ms access

hola amigos..

necesito su ayuda please, tengo un adoquey con una sentencia sql, esta sentencia utiliza una funcion que programe con vba en un modulo de access.

cuando ejecuto la setencia en delphi atravez del adoquery no funciona. no reconoce la funcion que esta en modulo de access

les agradecere su ayuda.

Última edición por Chogo fecha: 12-10-2012 a las 22:43:50. Razón: editado
Responder Con Cita
  #2  
Antiguo 12-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.020
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Nuestra bola de cristal está en el taller pasando la revisión
No sabemos qué quieres decir exactamente con "no funciona", ni vemos la sentencia que has puesto, ni podemos adivinar el error que te sale, ni nada de nada
Responder Con Cita
  #3  
Antiguo 13-10-2012
Avatar de Chogo
Chogo Chogo is offline
Miembro
 
Registrado: may 2005
Ubicación: Pto Cortes,Honduras,C.A.
Posts: 148
Poder: 19
Chogo Va por buen camino
Disculpe, pense que no seria necesario, porque la sentencia funciona bien dentro de access, pero en delphi no funciona por que no me reconoce la funciones que cree dentro de ms access con vba.

El problema es con la funcion "Dias_sin_fin_semana", esta yo la hize y la almacene en un modulo de access.

Esta query funciona bien en access, pero en delphi no, me dice que no reconoce la funcion

Código SQL [-]
    SELECT
       proveedores.Nombre AS proveedor,
       Clientes.Nombre AS cliente,
       REG_GARANTIA.serie,
       REG_GARANTIA.Codpro,
       REG_GARANTIA.Producto,
       REG_GARANTIA.Problema,
       REG_GARANTIA.estado_telefono,
       REG_GARANTIA.FECHA_INGRESO,
       REG_GARANTIA.FECHA_ENVIO,
       Dias_sin_fin_semana(REG_GARANTIA.FECHA_ENVIO,DATE()) AS DIAS
    FROM
       (REG_GARANTIA INNER JOIN Clientes ON REG_GARANTIA.CodCli=Clientes.CodCli) INNER JOIN proveedores ON REG_GARANTIA.ID_PROVEEDOR=proveedores.registro
    WHERE
       REG_GARANTIA.ID_ESTADO)=2;
Responder Con Cita
  #4  
Antiguo 13-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.020
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Chogo Ver Mensaje
El problema es con la funcion "Dias_sin_fin_semana", esta yo la hize y la almacene en un modulo de access.
Esta query funciona bien en access, pero en delphi no, me dice que no reconoce la funcion
¿Y el código delphi donde la llamas?, ¿cómo es?, ¿no funciona ninguna función o solamente esa?, ¿ha funcionado alguna vez?...
Responder Con Cita
  #5  
Antiguo 13-10-2012
Avatar de Chogo
Chogo Chogo is offline
Miembro
 
Registrado: may 2005
Ubicación: Pto Cortes,Honduras,C.A.
Posts: 148
Poder: 19
Chogo Va por buen camino
ya resolvi mi problema , voy repasar mi problema y la soluccion

hice esta función en un modulo de acces para calcular los días entre dos fecha sin contar sabado y domingo.
Código:
Public Function Dias_sin_fin_semana(Desde As Date, Hasta As Date) As Integer
      Dim dias As Integer
      Dim i As Date
     
      dias = 0
      i = Desde
      
      Do While i <= Hasta
      
          If Weekday(i, 1) >= 2 And Weekday(i, 1) <= 6 Then
                dias = dias + 1
          End If
          i = i + 1
      Loop
      Dias_sin_fin_semana = dias

End Function
Luego use esta función en una query de access que quize utilizar en delphi, pero mis compañeros del foro me explicaron que no puedo usar esta funciones desde delphi.
Código SQL [-]
SELECT
       proveedores.Nombre AS proveedor,
       Clientes.Nombre AS cliente,
       REG_GARANTIA.serie,
       REG_GARANTIA.Codpro,
       REG_GARANTIA.Producto,
       REG_GARANTIA.Problema,
       REG_GARANTIA.estado_telefono,
       REG_GARANTIA.FECHA_INGRESO,
       REG_GARANTIA.FECHA_ENVIO,
       Dias_sin_fin_semana(REG_GARANTIA.FECHA_ENVIO,DATE()) AS DIAS
    FROM
       (REG_GARANTIA INNER JOIN Clientes ON REG_GARANTIA.CodCli=Clientes.CodCli) INNER JOIN proveedores ON REG_GARANTIA.ID_PROVEEDOR=proveedores.registro
    WHERE
       REG_GARANTIA.ID_ESTADO)=2;

asi que decidi eliminar esa funcion de la query y cree la funcion en delphi para hacer el calculo en delphi, pero necesitaba hacer un filtro de registros. usando el mismo campo calculado

aqui esta mi funcion en delphi

Código Delphi [-]
function Dias_sin_fin_semana(desde, hasta: double): integer;
var
    dias:integer;
    iouble;

begin

      dias:=0;
      i:=desde;
      while  i <= hasta do
      begin
          if (DayOfWeek(i) >=2)  and (DayOfWeek(i) <=6) then
          dias := dias + 1;
          i:=i + 1;
      end;
      result:=dias;

end;

Realize mi calculo en delphi usando un campo calculado
Código Delphi [-]
procedure TDmReport_Garantias.REVISION_PROVEECalcFields(DataSet: TDataSet);
begin
      REVISION_PROVEEDIAS.AsFloat:=Dias_sin_fin_semana(REVISION_PROVEEFECHA_ENVIO.AsDateTime,Date); 
end;

Aplique mi filtro sobre el campo calculado. usando el evento OnFilterRecord que se ejecuta despues del evento open del TAdoquery.

Código Delphi [-]
procedure TDmReport_Garantias.REVISION_PROVEEFilterRecord(
  DataSet: TDataSet; var Accept: Boolean);
begin
      Accept := REVISION_PROVEEDIAS.AsFloat > 20;

end;

Hay que tener el cuidade de poner a True la propiedad Filtered, antes llamar el evento open

Código Delphi [-]
REVISION_PROVEE.Close;
REVISION_PROVEE.Filtered:=True;
REVISION_PROVEE.Open;

Espero me halla explicado bien
Responder Con Cita
  #6  
Antiguo 13-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.020
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por comentarlo, siempre le puede venir bien a alguien que quiera hacer algo similar
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi y Access (sistema de identificacion de usuarios) mia85 Conexión con bases de datos 3 29-03-2010 15:22:11
Delphi->Access (Problema con Usuarios de Windows) Gelmin Conexión con bases de datos 2 10-06-2005 20:54:11
Modulos Globales senpiterno Varios 2 15-04-2004 01:38:38
Cuantos Usuarios soporta Access? ing_alsaac Varios 7 29-02-2004 20:28:17


La franja horaria es GMT +2. Ahora son las 10:53:04.


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