NOTA FISCAL

BYDUMORAES 06/08/2007 16:21:58
#229675
Amigos, estou montando uma encrenca de impressao de nota fiscal, ja havia feito uma

vez mas perdi os dados,tive que refazer todo o sistema inclusive a nota, usando o

metodo Printer , funciona legal, mas tenho que passar as coordenadas X,Y, entao o

que fiz criei uma tabela com o nome dos campos e mais duas colunas pos_x, pos_y

onde o proprio operador informa as coordenadas. Ai ontem a noite pintou a duvida,

como vou ler estas informacoes do db e passar para o printer pois são 58 campos e

para me livra deste cliente eu queria que eles mesmo configurassem. Alguem tem

alguma sugestao para me passar? Pois pensei num select na tabela configuranota, eu

guardaria numa variavel o nome_do_campo, os dados da coordenada X e Y, mas to

achando complicado alguem ja fez algo do tipo? Abaixo segue mais ou menos a forma que usei na impressao antiga.



[c]sub imprimir()
Printer.PrintQuality = vbPRPQDraft
Printer.FontName = "Courier New"
Printer.ScaleMode = 6

if rs("tipo_movimento") = "S" then ' saida

Printer.CurrentX = ? ' aqui entraria o select do configuranota
Printer.CurrentY = ?
Printer.Print "X"

else

Printer.CurrentX = ? ' aqui entraria o select do configuranota
Printer.CurrentY = ?
Printer.Print "X"

end if



[/c]
LCSD 06/08/2007 16:30:38
#229680

SQL = "Select campoX, campoY from tabela where campo = valor"
rs.open SQL, ......................... (condições pra abrir um recordset)

Printer.CurrentX = rs!campoX
Printer.CurrentY = rs!campoY

rs.close



E assi mvai fazendo pra todos eles. Não têm segredo.

BYDUMORAES 06/08/2007 16:39:36
#229684
LCSD, vamo la, entao eu faco um select para cada item dos campos? eheheh, aff vai dar trabalho. Eu tinha pensado nisso mas achei que poderia ter algo mais simples sem usar 58 selects. Valeu
USUARIO.EXCLUIDOS 06/08/2007 17:00:55
#229691
bydu, nao precisa fazer 58 selects, vc vai fazer um select so trazendo todos os campos. pelo menos eu faço assim
PAULOOLIVEIRA 06/08/2007 20:40:45
#229717
cara, usa o print #1, e mais facil... voce seta o rs e vai trabalhando com ele na impressao!! procura aqui no forum que tem bastante exemplo

flw
USUARIO.EXCLUIDOS 07/08/2007 09:48:13
#229755
E se vc montasse a seguinte estrutura(tabela):

Descricao (PK)
Linha
Coluna

Vc criaria uma função passando apenas a descrição e a mesma retornaria as posições(desta forma vc usaria apenas um select genérico, capithe?). Os registros ficariam assim:

------------------------
DESCRICAO Linha Coluna
------------------------
Cliente 04 10
Cod.Produto 05 10
Descr. Item 05 20
Valor 05 30


E por ai vai...
LCSD 07/08/2007 10:50:26
#229776
Uma outra idéia pra VC fazer então, seria algo mais ou menos assim:


SQL = "Select campoX1, campoY1, campoX2, campoY2,........., campoX58, campoY58, from tabela where campo = valor"
rs.open SQL, ......................... (condições pra abrir um recordset)

for i=1 to 58
Printer.CurrentX = rs!campoX & i
Printer.CurrentY = rs!campoY & i
next i

rs.close



PS: Precisa testar, principalmente o FOR... NEXT, fiz de cabeça aquí pra VC e não dá pra testar e ver o resultado... Mas a lógica é mais ou menos essa...
BYDUMORAES 07/08/2007 11:00:12
#229779
Amigos quero ja agradecer pela ajuda de voces.

Na minha tabela CONFIGURANOTA esta da seguinte forma:

campo descricao pos_x pos_y
------------------------------------------------------
saida Saida 30 20
entrada Entrada 33 20
natuopera Natureza da Op. 10 15
LCSD 07/08/2007 11:07:12
#229784
Utilize o UNNION ALL e pronto.

Algo mais ou menos assim:


SQL = "Select campoX as CampoX1, campoY as CampoY1 from CONFIGURANOTA where campo = Saida union all Select campoX as CampoX2, campoY as CampoY2 from CONFIGURANOTA where campo = ENTRADA union all .............. union all Select campoX as CampoX58, campoY as CampoY58 from CONFIGURANOTA where campo = xxxxxxx"
rs.open SQL, ......................... (condições pra abrir um recordset)

for i=1 to 58
Printer.CurrentX = rs!campoX & i
Printer.CurrentY = rs!campoY & i
next i

rs.close


FGSANTOS 07/08/2007 13:41:41
#229823
Eu já fiz parecido mas diferente:

criei uma tabela onde os campos se chamam: nrnfx, nrnfy, datanfx, datanfy. cfopx, cfopy, etc...
entao eu tenho apenas 1 registro na tabela, faço um select * from confnf e pronto, tenho todos os campos e posicao x e y...

Uma observaçao: se o campo x e/ou y estiverem com zero, é sinal que nao devo imprimir...


LCSD 07/08/2007 15:15:41
#229836
Amigo...eu recomendo duas opções mais facil.....

primeira solução.....

configNota.ini.......um arquivo com as configuraçãoes da nota........

segunda solução......

registro do windows.....
é super rápido, prático e seguro.

ambos muito prático de trabalhar.....


Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas