Fórum Distribuição dos Registro em Etiquetas ??? #279781

02/05/2005

0

Gostaria de saber como distribuir os registros em etiquetas de 5 (cinco) colunas, porem, esta distribuição tem que se dá na horizontal, para que não haja prejuizo ou desperdicio de etiqueta, haja vista, fiz o scritp em sql e devidamente testado porem quando insiro os dados nas etiquetas (Relatorio feito atraves do Quick Report), esta preenchendo por colunas (ou melhor, na vertical ao inves de preencher na horizontal). Por gentiliza como devo proceder com esta dificuldade em inserir os dados na horizontal. Por favor, me ajudem atraves de dicas, sugestoes e exemplos praticos para que eu possa resolver este problema. :?: :?: :?:


Wly

Wly

Responder

Posts

02/05/2005

Gandalf.nho

Pelo que sei não dá para fazer isso no QuickReport, já que é o comportamento normal dele. O que vc pode fazer é enviar ´registros em branco´ antes dos registros normais para fazer a impressão das etiquetas começar na linha e coluna desejadas e assim não desperdiçar papel (é assim que faço)


Responder

Gostei + 0

02/05/2005

Wly

Pelo que sei não dá para fazer isso no QuickReport, já que é o comportamento normal dele. O que vc pode fazer é enviar ´registros em branco´ antes dos registros normais para fazer a impressão das etiquetas começar na linha e coluna desejadas e assim não desperdiçar papel (é assim que faço)


Então por gentilesa mostre este seu exemplo :?: E como devo fazer este tipo de lançamento em branco, não sabendo fazer isso ??? Exemplefique para mim ... Atencipadamente agradeço pela ajuda 8)


Responder

Gostei + 0

02/05/2005

Anfm

wly,

A solução que eu criei, não sei se é a mais correta, mas foi a solução q eu encontrei.

Eu crio um relatório no quick report usando qrlabels em vez de qrdblabels criando quantas colunas eu preciso.

Ex: 5 colunas - 5 QRLabels alinhados nas posições corretas de cada um.

Crio uma váriável para dizer qual linha do relatório estou
  private
    CurrentIndex: integer;


No evento BeforePrint

procedure Tqretiqueta.QuickRepBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
CurrentIndex := 0;
tbetiqueta.DatabaseName := diretorio;
tbetiqueta.Open;
tbetiqueta.First;
end;


E no evento OnNeedData

procedure Tqretiqueta.QuickRepNeedData(Sender: TObject;
  var MoreData: Boolean);
var
 preco : string;
begin

  MoreData := (not tbetiqueta.eof);

  if MoreData then
  begin
    qrlnomeloja1.Caption := NomeLoja;
    qrlcodbar11.Caption := ´*´+tbetiqueta.fieldbyname(´Referencia´).AsString+´*´;
    tbetiqueta.Next;

    qrlnomeloja2.Caption := NomeLoja;
    qrlcodbar21.Caption := ´*´+tbetiqueta.fieldbyname(´Referencia´).AsString+´*´;
    tbetiqueta.Next;

    qrlnomeloja3.Caption := NomeLoja;
    qrlcodbar31.Caption := ´*´+tbetiqueta.fieldbyname(´Referencia´).AsString+´*´;
    tbetiqueta.Next;

 end;

  Inc(CurrentIndex);
end;


Espero ter ajudado.


Responder

Gostei + 0

02/05/2005

Wly

[b:31527640cf] Prezado colega do forum veja minha procedure [/b:31527640cf]
Como é que vc criou as cinco 5 colunas ??? de que forma em simple detail ??? Observe a procedure ...

procedure TFrmSelEtiqSapato.btnPreviewClick(Sender: TObject);
Const SqlTmpEtiqSapato : String =
      //********** Seleção do Pedido para tabela temporaria ********
      ´Select calcado as Referencia, cores.cor, tam33, tam34,     ´+
      ´tam35, tam36, tam37, tam38, tam39                          ´+
      ´from itens_ped_calcado,cores                               ´+
      ´where itens_ped_calcado.cor=cores.cod_cor                  ´+
      ´and itens_ped_calcado.pedcalcado=:prnPedido                ´;
      SqlTmpPrintSapato : String =
      //************ Inserir os Sapatos na tabela temporaria *******
      ´Insert Into Tmp_EtiqSapato (Referencia,Cor,Tamanho) Values ´+
      ´(:prnReferencia,:prnCor,:prnTamanho)                       ´;
      SQL_Sapatos : String =
      ´Select Referencia,Cor,Tamanho From Tmp_EtiqSapato  ´;
var
  I,J,K,L,M,A,B : Integer;
begin
  dm.tblsapato.EmptyTable;
  with dm.qrySelect do
    begin
      Close;
      SQL.Clear;
      SQL.Add(SqlTmpEtiqSapato);
      ParamByName(´prnPedido´).asInteger := StrToInt(edtPedido.text);
      Open;
      First;
      While not Eof do
        begin
          T33:= 0;T34:= 0;T35:= 0;T36:= 0;T37:= 0;T38:= 0;T39:= 0;
          T33 := FieldByName(´Tam33´).AsInteger;
          if T33 > 0 then
            for I:= 1 to T33 do
              begin
                With dm.qryTmpSelect do
                  begin
                    Close;
                    SQL.Clear;
                    SQL.Add(SqlTmpPrintSapato);
                    ParamByName(´prnReferencia´).asString := dm.qrySelect.fieldbyName(´Referencia´).AsString;
                    ParamByName(´prnCor´).asString        := dm.qrySelect.fieldbyName(´Cor´).AsString;
                    ParamByName(´prnTamanho´).asString    := ´33´;
                    ExecSQL;
                  end;
              end;
          T34 := FieldByName(´Tam34´).AsInteger;
          if T34 > 0 then
            for J:= 1 to T34 do
              begin
                With dm.qryTmpSelect do
                  begin
                    Close;
                    SQL.Clear;
                    SQL.Add(SqlTmpPrintSapato);
                    ParamByName(´prnReferencia´).asString := dm.qrySelect.fieldbyName(´Referencia´).AsString;
                    ParamByName(´prnCor´).asString        := dm.qrySelect.fieldbyName(´Cor´).AsString;
                    ParamByName(´prnTamanho´).asString    := ´34´;
                    ExecSQL;
                  end;
              end;
          T35 := FieldByName(´Tam35´).AsInteger;
          if T35 > 0 then
            for K:= 1 to T35 do
              begin
                With dm.qryTmpSelect do
                  begin
                    Close;
                    SQL.Clear;
                    SQL.Add(SqlTmpPrintSapato);
                    ParamByName(´prnReferencia´).asString := dm.qrySelect.fieldbyName(´Referencia´).AsString;
                    ParamByName(´prnCor´).asString        := dm.qrySelect.fieldbyName(´Cor´).AsString;
                    ParamByName(´prnTamanho´).asString    := ´35´;
                    ExecSQL;
                  end;
              end;
          T36 := FieldByName(´Tam36´).AsInteger;
          if T36 > 0 then
            for L:= 1 to T36 do
              begin
                With dm.qryTmpSelect do
                  begin
                    Close;
                    SQL.Clear;
                    SQL.Add(SqlTmpPrintSapato);
                    ParamByName(´prnReferencia´).asString := dm.qrySelect.fieldbyName(´Referencia´).AsString;
                    ParamByName(´prnCor´).asString        := dm.qrySelect.fieldbyName(´Cor´).AsString;
                    ParamByName(´prnTamanho´).asString    := ´36´;
                    ExecSQL;
                  end;
              end;
          T37 := FieldByName(´Tam37´).AsInteger;
          if T37 > 0 then
            for M:= 1 to T37 do
              begin
                With dm.qryTmpSelect do
                  begin
                    Close;
                    SQL.Clear;
                    SQL.Add(SqlTmpPrintSapato);
                    ParamByName(´prnReferencia´).asString := dm.qrySelect.fieldbyName(´Referencia´).AsString;
                    ParamByName(´prnCor´).asString        := dm.qrySelect.fieldbyName(´Cor´).AsString;
                    ParamByName(´prnTamanho´).asString    := ´37´;
                    ExecSQL;
                  end;
              end;
          T38 := FieldByName(´Tam38´).AsInteger;
          if T38 > 0 then
            for B:= 1 to T38 do
              begin
                With dm.qryTmpSelect do
                  begin
                    Close;
                    SQL.Clear;
                    SQL.Add(SqlTmpPrintSapato);
                    ParamByName(´prnReferencia´).asString := dm.qrySelect.fieldbyName(´Referencia´).AsString;
                    ParamByName(´prnCor´).asString        := dm.qrySelect.fieldbyName(´Cor´).AsString;
                    ParamByName(´prnTamanho´).asString    := ´38´;
                    ExecSQL;
                  end;
              end;
          T39 := FieldByName(´Tam39´).AsInteger;
          if T39 > 0 then
            for A:= 1 to T39 do
              begin
                With dm.qryTmpSelect do
                  begin
                    Close;
                    SQL.Clear;
                    SQL.Add(SqlTmpPrintSapato);
                    ParamByName(´prnReferencia´).asString := dm.qrySelect.fieldbyName(´Referencia´).AsString;
                    ParamByName(´prnCor´).asString        := dm.qrySelect.fieldbyName(´Cor´).AsString;
                    ParamByName(´prnTamanho´).asString    := ´39´;
                    ExecSQL;
                  end;
              end;
          Next;
        end;
    end;
    Try
    Application.CreateForm(TFrmEtiqSapato, FrmEtiqSapato);
      with FrmEtiqSapato do
        begin
          qrySapato.Close;
          qrySapato.SQL.Clear;
          qrySapato.SQL.Add(SQL_Sapatos);
          qrySapato.Open;
          Sapato.Preview;
        end;
    Finally
      FrmEtiqSapato.Free;
      dm.tblsapato.EmptyTable;
    end;
end;



Responder

Gostei + 0

03/05/2005

Anfm

Fiz um relatório simples, sem ligação a nenhum dataset. Na banda Detail eu coloco os labels, se vc quer fazer 5 colunas, vc deverá colocar 5 labels um ao lado do outro alinhados como vc deseja imprimir, e através do código jogar os valores neles.


Responder

Gostei + 0

03/05/2005

Marcio.theis

Quando quero fazer este tipo de impressão de etiquetas, normalmente seleciono o papel customsize e defino o tamanho do quickreport do mesmo tamanho da etiqueta, ou seja, primeiro ele ira preencher os 5 registros na horizontal e depois pegar mais uma página e preencher mais 5, o único problema fica no momento de saltar de uma página para a outra, ai terá que ficar testando até achar a posição certa.
Mas é pelo menos desta forma que eu utilizo e da certo...


Responder

Gostei + 0

03/05/2005

Wly

[quote:b68e58fa35=´/]/]@t´]Quando quero fazer este tipo de impressão de etiquetas, normalmente seleciono o papel customsize e defino o tamanho do quickreport do mesmo tamanho da etiqueta, ou seja, primeiro ele ira preencher os 5 registros na horizontal e depois pegar mais uma página e preencher mais 5, o único problema fica no momento de saltar de uma página para a outra, ai terá que ficar testando até achar a posição certa.
Mas é pelo menos desta forma que eu utilizo e da certo...[/quote:b68e58fa35]

Cara é o seguinte fiz o que disse porem estou com problemas de salto de pagina. Como evitar este salto de pagina, um vez a estiqueta contem varias linhas, Ok ??? Outra coisa no preview todos os dados estão aparecendo, ou seja, a cada 5 (cinco) registro aparece um nova pagina, OK !!!, no meu teste deu um total de 12 paginas, ficando inviavel, principalmente por a impressora esta dando um salto de pagina muinto grande (melhor dizendo um salto normal, porem no começo da pagina seguinte). A impressora que estou utilizando é uma LX-300+, como fazer para que ele evite este salto ???


Responder

Gostei + 0

03/05/2005

Marcio.theis

O que vc terá de fazer é teste e configurações até chegar no ponto certo...
Eu tenho uma etiqueta aqui desta forma que é de duas colunas, ela esta configurada com o Top e Button = 0 e o Left e Right = 3, onde que o papel é Custom Size com o tamanho de 180,00 X 24,00, tendo o detail um tamanho de 22,49.


Responder

Gostei + 0

03/05/2005

Wly

[quote:3a1aa85752=´/]/]@t´]O que vc terá de fazer é teste e configurações até chegar no ponto certo...
Eu tenho uma etiqueta aqui desta forma que é de duas colunas, ela esta configurada com o Top e Button = 0 e o Left e Right = 3, onde que o papel é Custom Size com o tamanho de 180,00 X 24,00, tendo o detail um tamanho de 22,49.[/quote:3a1aa85752]

Mas me diga como vc fez para evita o salto de pagina, pois eu fiz, a mesma configuração sua, porem continua saltando pagina !!!


Responder

Gostei + 0

04/05/2005

Marcio.theis

Nas configurações da impressora você deve de setar o tipo de papel igual a custom e a área não imprimível deve de ser 100, 100, 0, 0.


Responder

Gostei + 0

12/06/2008

Thesketh

Pessoa, eu precisei criar um relatório de etiquetas com o quickreport. A etiqueta era a da pimaco 6180 (3 colunas, 10 linhas). A solução q eu encontrei foi a seguinte:

Montei no quickreporte as configs da etiqueta, assim a banda detail ficou certinha com o tamanho da etiqueta.

Agora quanto essa parte dos espaços eu resolvi assim:

Na minha tela pra selecionar os registros pra imprimir tem um campo pro usuário indicar em qual etiqueta ele quer que comece a impressão. Então eu tenho uma tabela temporária no meu banco de dados especifica pra imprimir as etiquetas, ai quando o usuário clica em gerar etiquetas, eu monto a tabela exatamente como eu quero, inserindo no inicio quantos registros em branco eu precisar e depois os dados necessários para as etiquetas. Funcionou direitinho.

Não sei se é a forma mais correta, uma vez que eu tenho que ficar gravando os dados no banco de dados mesmo que temporariamente.

Qualquer sugestão pra resolver essa questão é bem vinda.

Valeu!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar