NUMERO DO CUPOM
Se for não seria mais fácil cada um por si.
Trabalho em SuperMercado e cada PDV emite o seu numero de vendas!!!
Faça a FUNÇÃO que foi passada a você que dara certo não duplicará execute-a no inicio da venda, ela tera que ser reconhecida no inicio da venda.
Crie uma Tabela para cada PDV assim não tera o duplicamento enquanto a venda não foi encerrada!!!
Espero ter ajudado
estou usando somente uma tabela pra armazenar o numero da venda, q esta em uma maquina (SERVIDOR).... onde os 3 pdv[ô]s fazem essa tarefa...
Cada PDV deve ter sua venda para indicar até mesmo quantos clientes passaram pelo mesmo.
Cada numero de venda deve ser gravado na tabela somente após a compra ser encerrada caso contrario o numero da venda vai ser o mesmo
Ex.
iniciei a venda 1, mas não encerrei ela, foi cancelada porque esqueci o dinheiro!
A próxima venda vai 1 porque a minha não foi encerrada.
Entende ?
Então no caso a forma correta é criar uma tabela para cada PDV com as mesmas informações.
Ai na instalação do programa no PDV você colocara qual é o Nº do PDV e o programa tera que reconhecer e encaminhar os dados para a tabela
correspondente
isso procede.....
Function NumCupom()
--->>>> Dim Num As Integer
Set Rst = New ADODB.Recordset
Sql = [Ô]Select Max(Num_Cupom) As Num From Tbl_Vendas[Ô]
Rst.Open Sql, Conexao, 3
If Rst![Num] > 0 Then
Num = Rst![Num] + 1
Else
Num = 1
End If
Rst.Close
LblNumCupom.Caption = Format(Num, [Ô]000000[Ô]) [ô]Mostra na Tela
End Function
Citação::
Só nao entendi uma coisa, pra poder gerar o numero tive q informar a variavel Num como inteiro, sendo q ele já está como apelido na sql....
isso procede.....
Function NumCupom()
--->>>> Dim Num As Integer
Set Rst = New ADODB.Recordset
Sql = [Ô]Select Max(Num_Cupom) As Num From Tbl_Vendas[Ô]
Rst.Open Sql, Conexao, 3
If Rst![Num] > 0 Then
Num = Rst![Num] + 1
Else
Num = 1
End If
Rst.Close
LblNumCupom.Caption = Format(Num, [Ô]000000[Ô]) [ô]Mostra na Tela
End Function
a que postei nao tem isso
Function autoSalesNo()
RS.Open [Ô]SELECT max(NroVenda) as numero FROM vendas[Ô], Con
If RS![numero] > 0 Then
numero = RS![numero] + 1
Else
numero = 1
End If
RS.Close
txtInvoiceNo.Text = Format(numero, [Ô]000000[Ô]) [ô]mostra na tela
End Function
ja dessa forma, funcionou sem erro...
Function NumCupom()
Dim Num As Integer
Set Rst = New ADODB.Recordset
Sql = [Ô]Select Max(Num_Cupom) As Num From Tbl_Vendas[Ô]
Rst.Open Sql, Conexao, 3
If Rst![Num] > 0 Then
Num = Rst![Num] + 1
Else
Num = 1
End If
Rst.Close
LblNumCupom.Caption = Format(Num, [Ô]000000[Ô]) [ô]Mostra na Tela
End Function
SE FOR MYSQL tenta ae.
Tenho uma função (iniciaVenda) com o seguinte código.
Resumi a função e peguei apenas a parte que realmente vc utilizará.
Ao clicar em nova venda ou seja lá como o que for.....
Dim rsNumeraVenda As ADODB.Recordset
[ô]Faço um update na tabela e atualizo o campo idvendas com o ultimo registro inserido + 1
sqlid = [Ô]UPDATE sequencia SET idVendas=LAST_INSERT_ID(idVendas+1);[Ô]
BD.Execute (sqlid)
[ô]Logo em seguida já pego o numero gerado e jogo ele em um textbox
sqlid = [Ô]SELECT IDVendas FROM SEQUENCIA[Ô]
Set rs = New ADODB.Recordset
rs.Open sqlid, BD, 3, 3
ID = rs!idVendas
txttransid.Text = [Ô]PDV[Ô] & ID
Fiz o seguinte teste quando desenvolvi esse método.
Coloquei dois teclados de dois caixas próximo e tentei gerar uma duplicidade apertando simultaneamente o ENTER os dois teclados.
Não houve duplicidade.
NO SERVIDOR
No servidor crie uma tabela (aqui a minha chama sequencia) essa tabela teria a seguinte estrutura :
Citação:
CREATE TABLE 'sequencia' (
'id' INTEGER(11) DEFAULT NULL,
'IdAbertura' INTEGER(11) DEFAULT NULL,
'IdVendas' INTEGER(11) DEFAULT NULL,
'IdCompras' INTEGER(11) DEFAULT NULL,
'idImporta' INTEGER(11) DEFAULT NULL,
'idBalanco' INTEGER(11) DEFAULT NULL,
'IdProdutos' VARCHAR(13) COLLATE latin1_swedish_ci DEFAULT NULL,
'IdCliente' INTEGER(11) DEFAULT NULL,
'idCheques' INTEGER(10) UNSIGNED DEFAULT NULL,
'idNf' INTEGER(11) DEFAULT NULL,
'idVendedor' INTEGER(11) DEFAULT NULL,
'idCodInterno' INTEGER(10) UNSIGNED DEFAULT NULL,
'idCodigoRapido' VARCHAR(10) COLLATE latin1_swedish_ci DEFAULT NULL,
'idTransportador' INTEGER(11) DEFAULT NULL,
'idCadastros' INTEGER(10) UNSIGNED DEFAULT NULL,
'idNossoNumero' INTEGER(10) UNSIGNED DEFAULT NULL,
bla...bla...
bla...bla...
idOquevcquiser.......
)ENGINE=MyISAM COMMENT=[ô][ô] CHECKSUM=0 DELAY_KEY_WRITE=0 PACK_KEYS=0 MIN_ROWS=0 MAX_ROWS=0 ROW_FORMAT=DEFAULT INSERT_METHOD=NO;
Todos os valores inicias dessa tabela deve ser = 0.
Não é uma tabela para inserção(insert) de dados e sim atualização(update).
Tenta adaptar ao seu código.
exatamente assim como postei... confira as referencias do projeto
me envie o projeto pra que possa dar uma olhada... jdaverson @ gmail.com