Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RMVC

[Resolvido] Delphi

Recommended Posts

Boas,

 

Estou a criar um ecrã que permite ao utilizador inserir vários dados. Mas quero que eles possam validar vários itens (gravar no dataSource) antes de gravar na tabela.

Para isso criei esta função:

 

Function TFSubTipoAutos.CalculaNumeroTipo(ValueTipo: integer):integer;
var cal: TMSQuery;  p: string;
begin
       result:=0;
       cal := TMSQuery.Create(nil);
       cal.Connection := dGrvisa.dbGrvisa;

       cal.SQL.Clear;
       cal.SQL.Add('Select max(SubTipo) as Maximo');
       cal.SQL.Add('From t055_095 (nolock)');
       cal.SQL.Add(' where tipo =&ValueTipo');
       cal.MacroByName('ValueTipo').AsInteger := ValueTipo;
       cal.Open;

       if not cal.IsEmpty then
         result := cal.fieldbyName('Maximo').AsInteger;
       inc(result);

       cal.Close;
       cal.Free;
       cSubTipo.Enabled := False;
end;

Que chamo posteriormente no procedure

 

procedure TFSubTipoAutos.cTipoAutosExit(Sender: TObject);
var mDesignacaoTipo: string;
begin
       if trim(cTipoAutos.Text)= EmptyStr then  exit;

       mDesignacaoTipo := ProcuraTipoAutos(StrtoInt(cTipoAutos.text));

       if mDesignacaoTipo <> EmptyStr then
          dTipoAutos.Text := mDesignacaoTipo
       else
       begin
          MensagemErro(Self,rodape,'Tipo de Autos inválido',0,12,'i');
          cTipoAutos.Text := EmptyStr;
          dTipoAutos.Text := EmptyStr;
          exit;
       end;

   cSubTipo.Text:=IntToStr(CalculaNumeroTipo(StrToInt(cTipoAutos.text)));
   dSubTipo.setfocus;
end;

O meu problema é como faço que seja incrementado um valor sempre que se valida sem que seja necessário gravar.De resto está tudo a funcionar ok.

Exemplo:

artigo 1

tipo= 4

subtipo=1

designação: xxx

validar

 

artigo 2

tipo= 4 ( escolho o mesmo tipo que o anterior)

subtipo=2 ( este valor devia aparecer automaticamente)

designação: xxx

validar

 

gravar ( gravou os dois artigos)

 

Agradeço toda ajuda e esclarecimentos que possam disponibilizar.

 

Cumps.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para tentar resolver a minha questão, criei a seguinte função

Function TFSubTipoAutos.EncontraValor(ValueSubTipo: integer):integer;
var i:integer;
Encontrou: Boolean;
begin
        result:=1;
        i:=ValueSubTipo;
        Encontrou:=False;
        while not Encontrou do
        begin
          if not qAutos.Locate('Tipo; SubTipo', varArrayOf ([cTipoAutos.Text,i]),
               [loCaseInsensitive]) Then
          begin
                 If i=1 then
                 begin
                        encontrou:= true;
                 end
                 else
                        inc(i);
          end
          else
                Encontrou:=True;
        end;

        result:=i;
end;

Mas existe aqui algo que não está a funcionar...

 

Podem dar uma ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.