[firebase-br] situação estranha com firebird
Marcio Alves de Almeida
net.marcio em gmail.com
Qua Maio 26 14:36:43 -03 2010
Da uma Olhada ai para vc tirar uma idéia
procedure TFrmFecha_Caixa.BtnConfirClick(Sender: TObject);
Var
Txt1: String;
begin
Q_AchaVenda.Close; //
"Cod_Venda" //Ven_NumNota Cod_Venda
Q_AchaVenda.Sql.Clear; //Ven_NumNota
Q_AchaVenda.SQL.Add('SELECT * FROM "Venda" WHERE
"Venda"."Cod_Venda" = '''+UpperCase(EditBusca.Text)+''' ');
Q_AchaVenda.Open;
If Q_AchaVendaVen_Status.Value = 'F' Then
Begin
ShowMessage('Esta nota foi fechada por outro caixa...Verifique!!!');
// LimpaCampos;
Q_AchaVenda.Close;
exit;
end;
Try
Modulo.ibDatabase.StartTransaction;
Modulo.Q_Venda.Edit;
Modulo.Q_VendaVen_Status.Value := 'F';
Modulo.Q_VendaVen_Caixa.Value := Modulo.MemoriaNome.Value;
Modulo.Q_VendaCod_Caixa_Funcionario.Value :=
Modulo.MemoriaCodigo.Value;
Modulo.Q_VendaVen_Codigo_AbreCaixa.Value := ACodigo_Caixa;
//aki eh o codigo do caixa que esta aberto
Modulo.Q_Venda.Post;
// BaixaItens; // Aki mexe na tabela itensVenda alterando
status e descontando quantidade de reserva Quantidade2
Modulo.Q_Fecha_Nota.Close;
Modulo.Q_Fecha_Nota.Sql.Clear;
Modulo.Q_Fecha_Nota.SQL.Add('SELECT * FROM "Fecha_Nota" where
"Fecha_Nota"."Cod_Fecha_Nota" Is Null ');
Modulo.Q_Fecha_Nota.Open;
Modulo.Q_Fecha_Nota.Append;
Modulo.Q_Fecha_NotaData.Value :=
Modulo.MemoriaDataServer.Value;;
Modulo.Q_Fecha_NotaHora.Value := Now;
Modulo.Q_Fecha_NotaCod_Venda.Value :=
Modulo.Q_VendaCod_Venda.Value;
Modulo.Q_Fecha_NotaVen_NumNota.Value :=
Modulo.Q_VendaVen_NumNota.Value;
Modulo.Q_Fecha_NotaV_Total_Real.Value :=
Modulo.Q_VendaVen_VlrTotal.Value;
Modulo.Q_Fecha_NotaV_Total_Guarani.Value :=
Modulo.Q_VendaVen_VlrTot_Guarani.Value;
Modulo.Q_Fecha_NotaV_Total_Peso.Value :=
Modulo.Q_VendaVen_VlrTot_Peso.Value;
Modulo.Q_Fecha_NotaV_Total_Dolar.Value :=
Modulo.Q_VendaVen_VlrTot_Dolar.Value;
Modulo.Q_Fecha_NotaPromissoria.Value := 'N'; //digo se eh
promissoria o a vista
Modulo.Q_Fecha_NotaTipo.Value := 'V'; // akii eh
troco V = Venda
Modulo.Q_Fecha_NotaCod_Funcionario.Value := Modulo.MemoriaCodigo.Value;
Modulo.Q_Fecha_NotaNomeCaixa.Value := Modulo.MemoriaNome.Value;
//****************ver isso depois**************20/10/2009
//***Real
If EditReal.Value > 0 Then
Begin
Modulo.Q_Fecha_NotaV_Total_Real_Recebido.Value :=
RecebidoReal.Value;
end;
//***Guarani
If EditGuarani.Value > 0 Then
Begin
Modulo.Q_Fecha_NotaV_Total_Guarani_Recebido.Value :=
RecebidoGuarani.Value;
end;
//** Dolar
If EditDolar.Value > 0 Then
Begin
Modulo.Q_Fecha_NotaV_Total_Dolar_Recebido.Value :=
RecebidoDolar.Value;
end;
//** Peso
If EditPeso.Value > 0 Then
Begin
Modulo.Q_Fecha_NotaV_Total_Peso_Recebido.Value :=
RecebidoPeso.Value;
end;
Modulo.Q_Fecha_NotaCod_Abertura_Caixa.Value := ACodigo_Caixa;
Modulo.Q_Fecha_Nota.Post;
BaixaItens; // Aki mexe na tabela itensVenda alterando
status e descontando quantidade de reserva Quantidade2
TeProgressBar1.Visible := False;
Modulo.ibDatabase.Commit;
LimpaCampos;
Modulo.Q_MovSaida.Close;
except
If Modulo.Q_Fecha_Nota.State in [dsEdit,dsInsert] Then
Begin
Modulo.Q_Fecha_Nota.Cancel;
end;
Modulo.ibDatabase.Rollback;
Txt1 := 'Nao foi possivel concluir este recebimento tente novamente';
//ShowMessage('Nao foi possivel concluir o recebimento tente novamente');
MessageBox(Application.Handle, PChar(Txt1), 'Atencao Caixa',
MB_ICONINFORMATION + MB_OK);
Modulo.Q_MovSaida.Close;
TeProgressBar1.Visible := False;
LimpaCampos;
end;
end;
procedure TFrmFecha_Caixa.BaixaItens;
Var
Conta,Quantid : Integer;
Begin
Q_ItemVenda.Close;
Q_ItemVenda.Sql.Clear;
Q_ItemVenda.SQL.Add('SELECT * FROM "ItemVenda" where
"ItemVenda"."Cod_Venda" = '+IntToStr(Modulo.Q_VendaCod_Venda.Value)+'
');
Q_ItemVenda.Open;
If Q_ItemVenda.RecordCount > 0 Then
Begin
Modulo.Q_MovSaida.Close;
Modulo.Q_MovSaida.Sql.Clear;
Modulo.Q_MovSaida.SQL.Add('SELECT * FROM "MovSaida" where
"MovSaida"."Cod_MovSaida" is null ');
Modulo.Q_MovSaida.Open;
Conta := 0;
Quantid := 0;
Quantid := Q_ItemVenda.RecordCount;
Q_ItemVenda.First;
TeProgressBar1.Visible := True;
TeProgressBar1.Min := 0;
TeProgressBar1.Max := Quantid;
TeProgressBar1.Position := 0;
While Conta <> Quantid do
Begin
Q_ItemVenda.Edit;
Q_ItemVendaItem_FatData.Value := Modulo.MemoriaDataServer.Value;
Q_ItemVendaItem_Status.Value := 'F'; //fechada
Q_ItemVenda.Post;
Q_Produto.Close;
Q_Produto.Sql.Clear;
Q_Produto.SQL.Add('SELECT * FROM "Produto" where
"Produto"."Cod_Produto" = '+IntToStr(Q_ItemVendaCod_Produto.Value)+'
');
Q_Produto.Open;
If Q_Produto.RecordCount > 0 Then
Begin
Modulo.Q_MovSaida.Append;
Modulo.Q_MovSaidaCod_Venda.Value :=
Modulo.Q_VendaCod_Venda.Value;
//*******************************************
Modulo.Q_MovSaidaVen_NumNota.Value :=
Modulo.Q_VendaVen_NumNota.Value;
Modulo.Q_MovSaidaCod_Marca.Value := Q_ItemVendaCod_Marca.Value;
//*******************************************
Modulo.Q_MovSaidaCod_ItemVenda.Value :=
Q_ItemVendaCod_ItemVenda.Value;
Modulo.Q_MovSaidaCod_Produto.Value :=
Q_ItemVendaCod_Produto.Value;
Modulo.Q_MovSaidaCod_Grupo.Value :=
Q_ItemVendaItem_Cod_Grupo.Value;
Modulo.Q_MovSaidaCod_vendedor.Value :=
Modulo.Q_VendaCod_Funcionario.Value;
Modulo.Q_MovSaidaCod_Caixa.Value :=
Modulo.Q_VendaCod_Caixa_Funcionario.Value;
Modulo.Q_MovSaidaNumeroNota.Value :=
Modulo.Q_VendaVen_NumNota.Value;
Modulo.Q_MovSaidaSaida_Estorno.Value := 'Venda';
Modulo.Q_MovSaidaData.Value :=
Modulo.MemoriaDataServer.Value;
Modulo.Q_MovSaidaPrecoUnit.Value :=
Q_ItemVendaItem_VlrVenda.Value;
Modulo.Q_MovSaidaQuantidade.Value :=
Q_ItemVendaItem_QtddVenda.Value;
Modulo.Q_MovSaidaHora.Value := Now;
Modulo.Q_MovSaidaValorTotal.Value := Q_ItemVendaItem_Total.Value;
Modulo.Q_MovSaidaCod_Fecha_Nota.Value :=
Modulo.Q_Fecha_NotaCod_Fecha_Nota.Value;
Modulo.Q_MovSaidaEstoqueAnterior.Value :=
Q_ProdutoPro_Quantidade.Value;
Modulo.Q_MovSaidaEstoqueAtual.Value :=
Q_ProdutoPro_Quantidade.Value - Q_ItemVendaItem_QtddVenda.Value;
Modulo.Q_MovSaida.Post;
Q_Produto.Edit;
Q_ProdutoPro_Quantidade.Value :=
Q_ProdutoPro_Quantidade.Value - Q_ItemVendaItem_QtddVenda.Value;
Q_ProdutoPro_DtUltimaVenda.Value :=
Modulo.MemoriaDataServer.Value;
Q_Produto.Post;
end;
Conta := Conta + 1;
TeProgressBar1.Position := TeProgressBar1.Position + 1;
Q_ItemVenda.Next;
end;
end;
end;
Em 26 de maio de 2010 14:20, Elton da Motta Barbosa
<embarbosa em gmail.com> escreveu:
>>pois é, 9 da manha e parou novamente :(
>>creio que não seja mais problema com o firebird, coloquei um trecho de um
>>módulo que faz muito comitrettaing, com commit, vou ver se ajuda , fiz um
>>gstat e o next transacion tá acima de 52 mil em poucos mais de 2 horas de
>>uso..é normal isso?
>>
>>fui
>
> Depende da quantidade de usuários que você tem e do movimento que está fazendo.
> Mas no seu caso, acredito que você tenha algum loop que esteja algo como
>
> while not Tabela.eof
> begin
> Sql.clear;
> Sql.add('INSERT ALGO'+ tabela.campo1.asstring+
> ','+tabela.campo2.asstring+'etc...' );
> Sql.execute;
> transactionInserir.commit;
> end;
>
> Se for esse o caso, talvez queira mover o commit para o final do
> processo. Tem como você mostrar o relatório do gstat quando o banco de
> dados parou?
> Outra pergunta, você está com o *forced write* desligado. Tem algum
> motivo você ter feito isso?
>
> desculpe se demorar a responder, mas é que estou bem apertado aqui.
> bom trabalho,
> Elton
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista