NOTA FISCAL
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]
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]
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.
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
bydu, nao precisa fazer 58 selects, vc vai fazer um select so trazendo todos os campos. pelo menos eu faço assim
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
flw
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...
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...
Uma outra idéia pra VC fazer então, seria algo mais ou menos assim:
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...
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...
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
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
Utilize o UNNION ALL e pronto.
Algo mais ou menos assim:
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
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...
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...
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.....
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.....
Tópico encerrado , respostas não são mais permitidas