Pessoal, estou com uma dúvida que é simples mas não consigo resolver...
Fiz um procedimento para gerar um id para as tabelas, mas está retornando um 
erro Internal error:T2277

Tb estou com dúvida se isso deveria ser uma função ou um procedimento.. eu 
adcho que deveria ser uma função, já que deve retornar um numero... mas achei 
um código na internet, onde isso é declarado como procedimento.. Qual a opinião 
de vcs?

Onde está o erro??

abaixo está a rotina onde chamo a procedure
******************************************************************************
procedure Tdados.Q_clientesAfterInsert(DataSet: TDataSet);
var
    num: Integer;
begin
    Incremento(01, num,'CLIENTES');
    Q_clientesCliente_ID.AsInteger:= num;
end;
******************************************************************************
Aqui está a rotina

unit u_funcoes;

interface

uses
     sysUtils, u_dados;

     Procedure Incremento(opcao: Integer; var numero: Integer; codigo: String);


Implementation

Procedure Incremento (opcao: Integer; var numero: Integer; codigo: String);
var
     novonum: Boolean;
begin
     novonum:= False;
     case opcao of
          //criar um novo código
          01: begin
               dados.Q_ID.SQL.Clear;
               dados.Q_ID.SQL.Text:= 'SELECT * FROM tb_ID '+
                    'WHERE ID_Codigo = "'+ codigo + '"';
               dados.Q_ID.Open;
               if (dados.Q_ID.IsEmpty) then
               begin
                    dados.Q_ID.Append;
                    dados.Q_ID.FieldByName('ID_Codigo').Value:= codigo;
                    dados.Q_ID.FieldByName('ID_Numero').Value:= numero;
                    dados.Q_ID.FieldByName('ID_Status').Value:= '*';
                    dados.Q_ID.Post;
                    novonum:= True;
               end
               else
               begin
                    while (not(dados.Q_ID.Eof)) do
                    begin
                         if (dados.Q_ID.FieldByName('ID_Status').Value = '') 
then
                         begin
                              dados.Q_ID.Edit;
                              dados.Q_ID.FieldByName('ID_Status').Value := '*';
                              dados.Q_ID.Post;
                              numero:= 
dados.Q_ID.FieldByName('ID_Numero').AsInteger;
                              novonum:= True;
                              break;
                         end;
                         dados.Q_ID.Next;
                    end;

                    if (not(novonum)) then
                    begin
                         dados.Q_ID.SQL.Clear;
                         dados.Q_ID.SQL.Text:= 'SELECT MAX(ID_Numero) FROM 
tb_ID '+
                              'WHERE ID_Codigo= "'+ codigo + '"';
                         dados.Q_ID.Open;
                         numero:= 
dados.Q_ID.FieldByName('ID_Numero').AsInteger+ 1;
                         dados.Q_ID.Append;
                         dados.Q_ID.FieldByName('ID_Codigo').Value:= codigo;
                         dados.Q_ID.FieldByName('ID_Numero').Value:= numero;
                         dados.Q_ID.FieldByName('ID_Status').Value:= '*';
                         dados.Q_ID.Post;
                    end;
               end;
               dados.Q_ID.Close;
               //result:= numero;
               break;
     end;
     02: begin
          dados.Q_ID.SQL.Clear;
          dados.Q_ID.SQL.Text:= 'SELECT * FROM tb_ID '+
               'WHERE ID_Codigo = "'+ codigo + '" AND '+
               'ID_Numero = '+ IntToStr(numero);
          dados.Q_ID.Open;
          if (not(dados.Q_ID.IsEmpty)) then
               dados.Q_ID.Delete;
          dados.Q_ID.Close;
          //Result:= 0;
          break;
     end;

     03: begin
          dados.Q_ID.SQL.Clear;
          dados.Q_ID.SQL.Text:= 'SELECT * FROM tb_ID '+
               'WHERE ID_Codigo = "'+ codigo + '" AND '+
               'ID_Numero = '+ IntToStr(numero);
          dados.Q_ID.Open;
          if (not(dados.Q_ID.IsEmpty)) then
          begin
               dados.Q_ID.Edit;
               dados.Q_ID.FieldByName('ID_Status').Value:= '';
               dados.Q_ID.Post;
               dados.Q_ID.Close;
          end;
          //Result:= 0;
          break;
     end;
     end;
end;
end.
  ----------

No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.6/33 - Release Date: 28/06/05


[As partes desta mensagem que não continham texto foram removidas]





-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a