NUMERO DO CUPOM
ao execultar a rotina......
Gera o normal o código.. mas veja o q aconteceu na tabela.. atualiza mais de registro.. o q fiz de errado AGORO....rsrsrs
Function NumCupom()
Dim Rst As ADODB.Recordset
Dim Id As Integer
[ô]Faço um update na tabela e atualizo o campo idvendas com o ultimo registro inserido + 1
Sql = [Ô]UpDate Tbl_Vendas Set Num_Cupom=LAST_INSERT_ID(Num_Cupom + 1);[Ô]
Conexao.Execute (Sql)
[ô]Logo em seguida já pego o numero gerado e jogo ele em um textbox
Sql = [Ô]Select Num_Cupom From Tbl_Vendas[Ô]
Set Rst = New ADODB.Recordset
Rst.Open Sql, Conexao, 3, 3
Id = Rst!Num_Cupom
LblNumCupom.Caption = Format(Id, [Ô]000000[Ô])
End Function
([Ô]ôxi.. q coisa do balacobaco[Ô]) mas num desisto!!!!!!!!!!!!
Seguinte.
Eu tentaria assim:
Vi aqui no forum outro dia uma dica a respeito de bloqueio de registro que faz uma estação aguardar o termino da operação da outra estação, isso pode ajudar.
Alguem pode indicar o link.
Mas, como leigo que sou, posso estar errado, mas deixaria para abrir a tabela e gravar só na última hora, fechando ela em seguida, tipo abre - grava e fecha.
Se abrir quando começa a venda, fatalmente outra estação também estará iniciando uma nova venda, dai estarão utilizando um mesmo número de cupom
para duas ou mais vendas.
Outra coisa, já que a tabela tem um id que não se repete, porque não utilizar o próprio id para gerar o numero do cupom?
Daria muito menos trabalho e satisfaria o problema.
. . .
ta ai curioso e que eu mesmo tentei usar a função, e repito uso ela a mais de 03 anos num cliente, e nao deu certo, rsrssssss vai entender
http://www.macoratti.net/adomulti.htm
http://www.macoratti.net/redes.htm
Citação::
FOXMAM, Olha só como fiz, e como ficou na tabela..........
ao execultar a rotina......
Gera o normal o código.. mas veja o q aconteceu na tabela.. atualiza mais de registro.. o q fiz de errado AGORO....rsrsrs
Function NumCupom()
Dim Rst As ADODB.Recordset
Dim Id As Integer
[ô]Faço um update na tabela e atualizo o campo idvendas com o ultimo registro inserido + 1
Sql = [Ô]UpDate Tbl_Vendas Set Num_Cupom=LAST_INSERT_ID(Num_Cupom + 1);[Ô]
Conexao.Execute (Sql)
[ô]Logo em seguida já pego o numero gerado e jogo ele em um textbox
Sql = [Ô]Select Num_Cupom From Tbl_Vendas[Ô]
Set Rst = New ADODB.Recordset
Rst.Open Sql, Conexao, 3, 3
Id = Rst!Num_Cupom
LblNumCupom.Caption = Format(Id, [Ô]000000[Ô])
End Function
([Ô]ôxi.. q coisa do balacobaco[Ô]) mas num desisto!!!!!!!!!!!!
Moreira, vc tem que criar uma tabela apenas para gerenciar os codigos(no seu caso do cupom, NO MEU CASO de todos os cadastros).
No Update q vc esta fazendo vc esta fazendo na tabela de vendas(tbl_vendas) quando na verdade tem q ser feito em uma nova tabela. Crie um seu banco uma tabela (pode chama-la tblsequencia) a estrutura eu passei anteriormente.
é soh isso que esta errado, ou seja , vc esta fazendo todo o procedimento correto porém na tabela de vendas.
Depois de jogar o codigo do cupom no txtbox ae na finalização do cupom que vc vai inserrir na tbl_vendas.
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=320842&varWorld=
nao sei como e sua rotina de salvar os dados da venda a minha e esta vou deixar na integra pra vc
LBLCAIXALIVRE.Visible = True
Dim AdoOrders As New ADODB.Recordset
Dim AdoInvoice As New ADODB.Recordset
If lvprod.ListItems.Count <= 0 Then Exit Sub
If Option2.Value = True Then
[ô][ô][ô]Chama Venda a prazo... para contas a receber
Call VendaPrazo
[ô]verifica se o clinte esta bloqueado por debito e cancela a venda...
If Bloqueio = True Then
MsgBox [Ô]O cliente bloqueado, venda não autorizada![Ô] & Chr(10) + Chr(10) & [Ô]Consulte a gerência![Ô], vbCritical
Call btnCancel_Click
[ô]Call Cleartext
Exit Sub
End If
If AdoOrders.State = 1 Then Set AdoOrders = Nothing
[ô][ô][ô][ô][ô] Aqui esta começando o lançamento dos dados entao bastaria vc chamar denovo a rotina de verificação do numero do cupon
[ô]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
call NumCupom [ô]aqui
[ô][ô][ô][ô][ô]pra ver se mudou mostre um
msgbox [Ô]Numero do Cupon [Ô] & numcupon
[ô]atualiza o txtNumCupom
textNumCUpom.text=NumCupom [ô]se nao der certo vamos prescisar ver sua secreta rotina pois vc nao postou ela até agora ...rsssssssssss
[ô]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AdoOrders.Open [Ô]SELECT * from [Vendas] where [NroVenda] =[Ô] & CInt(txtInvoiceNo), Con, adOpenDynamic, adLockPessimistic
With AdoOrders
If .EOF Then
Timer2 = True
Con.BeginTrans
.AddNew
.Fields(0) = txtInvoiceNo.Text
.Fields(1) = txtAmount.Text
.Fields(2) = [Ô]0[Ô]
.Fields(3) = [Ô]0[Ô]
.Fields(4) = [Ô]0[Ô]
.Fields(5) = Date
.Fields(6) = 2 [ô](Mid(txtcaixa, 8, 2))
.Fields(7) = [Ô]0[Ô]
.Update
.Requery
Con.CommitTrans
.Close
End If
End With
For i = 1 To lvprod.ListItems.Count
If AdoInvoice.State = 1 Then Set AdoInvoice = Nothing
AdoInvoice.Open [Ô]SELECT * from Itens[Ô], Con, adOpenDynamic, adLockPessimistic
With AdoInvoice
Con.BeginTrans
.AddNew
.Fields(0) = txtInvoiceNo.Text
.Fields(1) = lvprod.ListItems(i).Text
.Fields(2) = lvprod.ListItems(i).SubItems(2)
.Fields(3) = lvprod.ListItems(i).SubItems(1)
.Fields(4) = lvprod.ListItems(i).SubItems(3)
.Fields(5) = lvprod.ListItems(i).SubItems(4)
.Update
.Requery
Con.CommitTrans
.Close
End With
calther = [Ô]update Produtos set Estoque = Estoque - [ô][Ô] & lvprod.ListItems(i).SubItems(1) & [Ô][ô] where [idProduto] =[ô][Ô] & lvprod.ListItems(i).Text & [Ô][ô][Ô]
Con.Execute calther
Next i
PicLogoG.Visible = True
btnStart.Enabled = True
btnPrint.Enabled = True
btnCancel.Enabled = False
btnSave.Enabled = False
[ô] End If
Call Cleartext
lvprod.Refresh
Sales.Refresh
Option1.Value = 1
[ô]Exit Sub
Else
If txtPayments.Text = [Ô][Ô] Then
MsgBox [Ô]Por favor digite o total![Ô], vbInformation
txtPayments.Locked = False
txtPayments.Enabled = True
txtPayments.SetFocus
Exit Sub
Else
LblStatus.Caption = [Ô][Ô]
If AdoOrders.State = 1 Then Set AdoOrders = Nothing
AdoOrders.Open [Ô]SELECT * from [Vendas] where [NroVenda] =[Ô] & CInt(txtInvoiceNo), Con, adOpenDynamic, adLockPessimistic
With AdoOrders
If .EOF Then
Timer2 = True
Con.BeginTrans
.AddNew
.Fields(0) = txtInvoiceNo.Text
.Fields(1) = txtAmount.Text
.Fields(2) = txtDiscount.Text
.Fields(3) = txtPayments.Text
.Fields(4) = txtChange.Text
.Fields(5) = Date
.Fields(6) = 2 [ô](Mid(txtcaixa, 8, 2))
.Fields(7) = 1
.Update
.Requery
Con.CommitTrans
.Close
End If
End With
For i = 1 To lvprod.ListItems.Count
If AdoInvoice.State = 1 Then Set AdoInvoice = Nothing
AdoInvoice.Open [Ô]SELECT * from Itens[Ô], Con, adOpenDynamic, adLockPessimistic
With AdoInvoice
Con.BeginTrans
.AddNew
.Fields(0) = txtInvoiceNo.Text
.Fields(1) = lvprod.ListItems(i).Text
.Fields(2) = lvprod.ListItems(i).SubItems(2)
.Fields(3) = lvprod.ListItems(i).SubItems(1)
.Fields(4) = lvprod.ListItems(i).SubItems(3)
.Fields(5) = lvprod.ListItems(i).SubItems(4)
.Update
.Requery
Con.CommitTrans
.Close
End With
calther = [Ô]update Produtos set Estoque = Estoque - [ô][Ô] & lvprod.ListItems(i).SubItems(1) & [Ô][ô] where [idProduto] =[ô][Ô] & lvprod.ListItems(i).Text & [Ô][ô][Ô]
Con.Execute calther
Next i
PicLogoG.Visible = True
btnStart.Enabled = True
btnSave.Enabled = True
btnPrint.Enabled = True
End If
lvprod.Refresh
Sales.Refresh
End If
End Sub
mas agradeço a todos aqueles q tiveram boa vontade de compartilhar suas idéias...
até a próxima......rsrs...