Distribuição dos Registro em Etiquetas ???
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
Curtidas 0
Respostas
Gandalf.nho
02/05/2005
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)
GOSTEI 0
Wly
02/05/2005
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)
GOSTEI 0
Anfm
02/05/2005
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
No evento BeforePrint
E no evento OnNeedData
Espero ter ajudado.
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.
GOSTEI 0
Wly
02/05/2005
[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 ...
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;
GOSTEI 0
Anfm
02/05/2005
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.
GOSTEI 0
Marcio.theis
02/05/2005
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...
Mas é pelo menos desta forma que eu utilizo e da certo...
GOSTEI 0
Wly
02/05/2005
[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 ???
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 ???
GOSTEI 0
Marcio.theis
02/05/2005
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.
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.
GOSTEI 0
Wly
02/05/2005
[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 !!!
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 !!!
GOSTEI 0
Marcio.theis
02/05/2005
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.
GOSTEI 0
Thesketh
02/05/2005
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!!!
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!!!
GOSTEI 0