Se vc estiver usando FireBird, dá pra fazer uma "gambiarra" se vc
tiver certeza que sempre o primeiro registro vai ser o que vc quer.

na procedure coloca a instrução SELECT FIRST 1 .......

Isso deve resolver seu problema.


--- Em delphi-br@yahoogrupos.com.br, "pena_rs" <[EMAIL PROTECTED]> escreveu
>
> ERRO:
> multiple rows in singleton select at procedure "MOV_PRODUTOS"
> 
> PROCEDURE MOVIMENTA
> procedure TFrmProdutos.Movimenta(VTipo:String; VCodigo:Integer;
> VNome:String;Vordem:Integer);
> begin
> D_M.MOV_produtos.ParamByName('VTIPO').AsString:=VTipo;
> D_M.MOV_produtos.ParamByName('VCODIGO').AsInteger:=VCodigo;
> D_M.MOV_produtos.ParamByName('VNOME').AsString:=VNome;
> D_M.MOV_produtos.ParamByName('VORDEM').AsInteger:=Vordem;
> D_M.MOV_produtos.ExecProc;
> end;
> 
> seguinte, eu teste se o produto ja existe com este nome
> VPri:=D_M.Qprodutosproduto.AsString;
> if ((VPri='') or (VPri=' ')) and not Bcancela.Focused
> then Begin
> MessageBeep(32);
> MessageDlg('Produto Inválido',mtError,[mbOk],0);
> DBNome.SetFocus;
> exit;
> end;
> Movimenta('NOME',0,D_M.Qprodutosproduto.AsString,ORDEM);
> VCRetorno:=D_M.MOV_produtos.ParamByName('RCODIGO').AsInteger;
> VNRetorno:=D_M.MOV_produtos.ParamByName('RNOME').AsString;
> if ((VCRetorno>0) and (inclusao=1)) or ((inclusao=0) and (VCRetorno>0)
> and (VCRetorno<>D_M.QprodutosCodigo.AsInteger)) and not
> Bcancela.Focused then begin
> MessageBeep(32);
> MessageDlg('Produto com este Nome já Existente'+#10#13+#10#13+
> 'Código - '+IntToStr(VCRetorno)+#10#13+
> 'Nome - '+VNRetorno,mtError,[mbOk],0);
> if messagedlg('Confirme!',mtconfirmation,[mbyes,mbno],0)=mrNO
> then begin
> DBNome.SetFocus;
> exit;
> end;
> end;
> 
> QUANDO VOU TESTAR OUTRO CAMPO É QUE DA O ERRO, MAS O INTERESSANTE QUE
> DA O ERRO, SE EU CONFIRMO QUE JA EXISTE
> VPri:=D_M.QprodutosReffab.AsString;
> if ((VPri<>'') and (VPri<and>0) and (inclusao=1)) or ((inclusao=0) and
> (VCRetorno>0) and (VCRetorno<>D_M.QprodutosCodigo.AsInteger)) and not
> Bcancela.Focused then begin
> MessageBeep(32);
> MessageDlg('Referência de Fábrica com este Código já
> Existente'+#10#13+#10#13+
> 'Código - '+IntToStr(VCRetorno)+#10#13+
> 'Nome - '+VNRetorno,mtError,[mbOk],0);
> if messagedlg('Confirme!',mtconfirmation,[mbyes,mbno],0)=mrNO
> then begin
> DBNome.SetFocus;
> exit;
> end;
> end;
> 
> *************PROCEDURE *************************
> 
> ELSE IF (:VTIPO='NOME') THEN
> BEGIN
> SELECT CODIGO,PRODUTO FROM PRODUTOS WHERE PRODUTO=:VNOME ORDER
> BY PRODUTO INTO :RCODIGO,:RNOME;
> SUSPEND;
> END
> ELSE IF (:VTIPO='REFFAB') THEN
> BEGIN
> SELECT CODIGO,PRODUTO FROM PRODUTOS WHERE REFFAB=:VNOME ORDER
> BY REFFAB INTO :RCODIGO,:RNOME;
> SUSPEND;
> END
>


Responder a