Fórum Software - Venda de Passagens #217078

27/02/2004

0

Amigos,

vejam neste código: Estou querendo salvar a venda da passagem. Lembrando que duas pessoas não podem ocupar a mesma poltrona. Está dando um erro. Mesmo colocando este código aparece a mensagem de poltrona ocupada e está salvando. Vejam:
procedure TControle.BitBtn2Click(Sender: TObject);
var
sai:boolean;
begin
table1.first;
sai:= false;
while sai = false do
begin
if Table1Poltrona.value <> dbedit3.text then
begin
if botao = ´novo´ then
begin
table1.insert;
Table1Nome.value := DBComboBox1.Text;
Table1Destino.value :=DBComboBox2.text;
table1poltrona.value := dbedit3.text;
table1datasaida.value:= StrToDate(dbedit4.text);
table1dataretorno.value:=Strtodate(dbedit5.text);
table1valortotal.value:= strtoint(dbedit6.text);
table1qtdparcela.value:= Strtoint(dbedit7.text);
table1valorparcela.value:= strtoint(dbedit8.text);
table1.Post;
sai:= true;
end else begin
if botao = ´alterar´ then
begin
table1.edit;
Table1Nome.value := DBComboBox1.Text;
Table1Destino.value :=DBComboBox2.text;
table1poltrona.value := dbedit3.text;
table1datasaida.value:= StrToDate(dbedit4.text);
table1dataretorno.value:=Strtodate(dbedit5.text);
table1valortotal.value:= strtoint(dbedit6.text);
table1qtdparcela.value:= Strtoint(dbedit7.text);
table1valorparcela.value:= strtoint(dbedit8.text);
table1.Post;
sai:= true;
end;
end;
end else begin
Application.MessageBox(´Esta poltrona já está ocupada! Escolha outra.´, ´Poltrona Ocupada´, MB_OK+MB_ICONERROR);
sai:= true;
end;
end;
end;



Desde já agradecido!


Diegus

Diegus

Responder

Posts

28/02/2004

Thomaz_prg

Antes de tudo, eu aconselharia voce a montar procedimentos quando uma quantidade x de linhas for se repetir algumas vezes, isso facilita nao só no desenvolvimento do sistema, como também na manutenção. (digo isso pelo fato da atribuição do valor dos campos se repetir mais de uma vez de forma idêntica).
O que pode estar acontecendo, é um pequeno erro de lógica, pela forma como foram usados os if..end else... Se você colocar o else, e não tiver outra opção de resposta não há a necessidade de um novo if. se for haver mais uma opção, como é o seu caso, onde há a chamada de um novo if, não há a necessidade de se usar end else begin.
tente desta forma, nao testei mas, está um pouco mais clara.

procedure TControle.BitBtn2Click(Sender: TObject);
var
sai:boolean;
begin
table1.first;
sai:= false;
while sai = false do begin
if Table1Poltrona.value <> dbedit3.text then begin
if botao = ´novo´ then begin
table1.insert;
//inicio da parte, onde poderia ser usada uma procedure
Table1Nome.value := DBComboBox1.Text;
Table1Destino.value :=DBComboBox2.text;
table1poltrona.value := dbedit3.text;
table1datasaida.value:= StrToDate(dbedit4.text);
table1dataretorno.value:=Strtodate(dbedit5.text);
table1valortotal.value:= strtoint(dbedit6.text);
table1qtdparcela.value:= Strtoint(dbedit7.text);
table1valorparcela.value:= strtoint(dbedit8.text);
table1.Post;
//fim
sai:= true;
end else
if botao = ´alterar´ then begin
table1.edit;
Table1Nome.value := DBComboBox1.Text;
Table1Destino.value :=DBComboBox2.text;
table1poltrona.value := dbedit3.text;
table1datasaida.value:= StrToDate(dbedit4.text);
table1dataretorno.value:=Strtodate(dbedit5.text);
table1valortotal.value:= strtoint(dbedit6.text);
table1qtdparcela.value:= Strtoint(dbedit7.text);
table1valorparcela.value:= strtoint(dbedit8.text);
table1.Post;
sai:= true;
end;
end else begin
Application.MessageBox(´Esta poltrona já está ocupada! Escolha outra.´, ´Poltrona Ocupada´, MB_OK+MB_ICONERROR);
sai:= true;
end;
end;
end;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar