Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
Como Generar Dos Ordenes automaticamente segun la cantidad de lineas

Buenos dias estoy desarrollando un sistema de Laboratorios clinicos, la duda que tengo es la siguiente:
La orden de examenes no son fiscales por lo que se imoprimen en formas sin ningun tipo de membrete y muchaqs veces un mismo paciente tiene hasta 30 examenes pero En el formato de factura solo caben 11 lineas y cuando voy a emitir la fatura solo llamo el numero de orden o historia y se trae los items, pero cuando pasa de 11 me imorime en dos numeros de controles la misma facura y en venezuela eso no es legal, cada factura hoja debe llevar un numero diferente la oregunta es como hago para que el istema me divida la factura, si son 19 que el genere una factura con 11 lineas por ejemplo la factura 45 y luego automaticamente genere otra factura con los item que quedan osea la 46.
Responder Con Cita
  #2  
Antiguo 06-04-2014
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
Hola webmasterplc.
  • ¿ Estas imprimiendo mediante un reporteador o directamente en la impresora ?
  • ¿ Que base de datos estas usando ?
  • ¿ Con que controles data aware te conectas a ella ?
  • ¿ Cuál es, en líneas generales, la sentencia/s SQL que estas usando para generar la factura ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-04-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
Ok imprimo mediante reporteador Fast Report
Uso Mysql
me conecto con MyDac
y este es el codigo que uso para generar la factura

Código Delphi [-]
procedure TformTotalizar.btn4Click(Sender: TObject); 
var   
  pfactura,npfactura:Integer; 
begin 
  with datos.sqsetup do       
  begin       
    SQL.Clear;       
    SQL.Add('Select * From setup');       
    ExecSQL;       
    pfactura:= FieldByName('pfactura').AsInteger;       
  end; 
  npfactura:= pfactura+1;  
  with datos.sqsetup do       
  begin       
    SQL.Clear;       
    SQL.Add('Update setup');       
    SQL.Add('set pfactura=:npfactura');       
    ParamByName('npfactura').AsInteger:=npfactura;       
    ExecSQL;       end; //Datos de factura 
    with datos.tfacturas do     
    begin     
      Close;     
      if Active=False then Active:=True;     
      Insert;     
      Append;     
      FieldByname('fact_numero').AsInteger := pfactura;     
      FieldByname('fact_fecha').AsDateTime := Now;     
      FieldByname('fact_ncontrol').AsString := edtncontrol.Text;     
      FieldByname('fact_codigohistoria').AsString := edthistoria.Text;     
      FieldByname('fact_nombre').AsString := edtrazonsocial.Text;     
      FieldByname('fact_codigocliente').AsString := codigocliente;     
      FieldByname('fact_rif').AsString := edtrif.Text;     
      FieldByname('fact_exento').AsCurrency := totalfactura;     
      FieldByname('fact_total').AsCurrency := totalfactura;     
      FieldByname('fact_direccion').AsString:= edtdireccion.Text;     
      FieldByname('fact_paciente').AsString:= edtpaciente.Text;     
      Post;     
   end;

Última edición por ecfisa fecha: 07-04-2014 a las 05:30:07. Razón: corregir etiquetas [delphi] (interfaz mejorada)
Responder Con Cita
  #4  
Antiguo 07-04-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
coloco el codigo dentro de las etiquetas delphi y me queda asi
Responder Con Cita
  #5  
Antiguo 07-04-2014
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 webmasterplc Ver Mensaje
coloco el codigo dentro de las etiquetas delphi y me queda asi
No te preocupes no es tu culpa, es un problema que se provoca con la previsualización cuando se utiliza la interfaz mejorada (WYSIWYG).

Ya corregí el código en tu mensaje.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 07-04-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Supongo que el SQL debería traer 11 registros imprimir y luego buscar los siguientes 11.

Inicias un bucle con una variable con valor 0 (cero).
Ejecutas el SQL select first 11 skip (11 * :bucle) id_a from examenes order by examen
incrementas el valor del bucle
Ejecutas nuevamente el SQL. Te devolverá los primeros 11 habiendo saltado 11
Y repites esto tantas veces sea necesario hasta que no recibas registros.

Código Delphi [-]
bucle := 0;
repeat
   Facturas.SQL.Text := 'select first 11 skip (11 * :bucle) id_a from examenes order by examen'
   Facturas.Param.ByName['BUCLE'].AsInteger := bucle;
   Facturas.Open;

   if not Facturas.EOF then
      // Imprimir
until Facturas.EOF;
Responder Con Cita
  #7  
Antiguo 14-05-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
Generar Consulta Para llamar registros de 11 en 11 usando un contador

Buenas estoy realizando una consulta para traer registros de 11 en 11 para eso tenego un contador pero cuando ejecuto la consulta me da un error que adjuntare en el mensaje, el codigo para realizarlo es el siguiente.

Código Delphi [-]
var
 Count: Integer;

procedure Tformfacturar.BringEleven(var Count: Integer);
begin
  Count:=0;
  datos.sqfacturas.Close;
  datos.sqfacturas.SQL.Text:='SELECT * FROM dhistoria LIMIT :NUM * 11, 11';
  datos.sqfacturas.ParamByName('NUM').AsInteger:=Count;
  datos.sqfacturas.Open;
  if not datos.sqfacturas.IsEmpty then
  begin
    // :: Aqui lo que quieras hacer con los 11 registros obtenidos
    while not datos.sqfacturas.Eof do
    begin
      Lst1.Items.Add(datos.sqfacturas.FieldByName('nhistoria').AsString);
      datos.sqfacturas.Next;
    end;
    // ::
    Inc(Count);
  end
  else Count:= -1
end;
el procedimiento lo llamo desde un boton
Código Delphi [-]
if Count <> -1 then
  begin
    BringEleven(Count);
  end;
end;

Última edición por ecfisa fecha: 14-05-2014 a las 22:13:30. Razón: identación
Responder Con Cita
  #8  
Antiguo 14-05-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No crees un nuevo tema para seguir con lo mismo. He unido ambos hilos. Gracias por tu colaboración.
http://www.clubdelphi.com/foros/guiaestilo.php
Responder Con Cita
  #9  
Antiguo 15-05-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
Discume tome una sugerencia de la respuesta anterior
Responder Con Cita
  #10  
Antiguo 15-05-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que en el mensaje que has puesto, no preguntas nada, se te ha olvidado

En fin, que está claro que es el mismo tema, que no has sabido solucionarlo, pero está muy claro, tan solo tienes que "traducir" esa instrucción sql al lenguaje que use mysql, para ello debes consultar la documentación del mismo. Como ya te ha explicado y aconsejado ecfisa.
Responder Con Cita
  #11  
Antiguo 15-05-2014
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 webmasterplc Ver Mensaje
Buenas estoy realizando una consulta para traer registros de 11 en 11 para eso tenego un contador pero cuando ejecuto la consulta me da un error que adjuntare en el mensaje, el codigo para realizarlo es el siguiente.
Código Delphi [-]
var
 Count: Integer;

procedure Tformfacturar.BringEleven(var Count: Integer);
begin
  Count:=0;   <<== AQUI !
  ...
end;
el procedimiento lo llamo desde un boton
Código Delphi [-]
if Count <> -1 then
  begin
    BringEleven(Count);
  end;
end;
Hola webmasterplc.

Mas allá de la sentecia SQL, en la que no te puedo ayudar por mi desconocimiento en MySQL, inicializando la variable Count al inicio del procedimiento BringEleven siempre te devolverá los primeros 11 registros.

Fijate que en el mensaje #8 la inicializo en su declaración:
Código Delphi [-]
implementation

var
  Count: Integer = 0;
...

También aprovecho a aclarar, que mi sugerencia fué que preguntaras en el foro MySQL solamente sobre como usar LIMIT en la función SQL para que devuelva de a once registros, pero no que replantearas toda la problemática expuesta en este hilo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 15-05-2014 a las 13:46:38.
Responder Con Cita
  #12  
Antiguo 16-05-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
Ok ho Gracias y disculpa el mal entendido voy a seguir tratando
Responder Con Cita
  #13  
Antiguo 16-05-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
Y se paso los registros de la consulta a un array y luego los voy incluyedo en la tabla en memoria de 11 en 11 seria posible?
Responder Con Cita
  #14  
Antiguo 16-05-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Poder: 17
webmasterplc Va por buen camino
Bueno le sumo 11 al count y si funciona no se si sea lo mas opcitmo pero el codigo lo deje asi
Código Delphi [-]
procedure Tformfacturar.BringEleven(var Count: Integer);
begin

  datos.sqfacturas.Close;
  datos.sqfacturas.SQL.Text:='SELECT * FROM dhistoria WHERE nhistoria = :historia LIMIT :NUM , 11';
  datos.sqfacturas.ParamByName('NUM').AsInteger:=Count;
  datos.sqfacturas.ParamByName('historia').AsInteger:=StrToInt(ethistoria.Caption);
  datos.sqfacturas.Open;
  if not datos.sqfacturas.IsEmpty then
  begin
    // :: Aqui lo que quieras hacer con los 11 registros obtenidos
    while not datos.sqfacturas.Eof do
    begin
      Lst1.Items.Add(datos.sqfacturas.FieldByName('codigo').AsString);
      datos.sqfacturas.Next;
    end;
    // ::
    Count:=Count + 11;
  end
  else Count:= -1
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
generar arrays automaticamente Drago26 OOP 7 26-09-2008 12:40:26
Generar Còdigos automaticamente megaredoxk Conexión con bases de datos 3 05-12-2007 15:58:20
Generar automaticamente número de factura efelix OOP 3 03-04-2007 18:28:20
Como contar ordenes de impresion? JuanErasmo C++ Builder 2 25-01-2006 20:35:17
Cortar lineas automaticamente en campos memo taita Varios 2 04-03-2005 13:45:12


La franja horaria es GMT +2. Ahora son las 12:49:09.


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