Array
(
)

Uma soloção usada para um INSERT na tabela

Gigatel
   - 04 jan 2006

Aí galera estou presisando de algo assimmm.clico no Button ele verifica o estado da tabela...se a tabela não tiver em modo de insert ou edit ele dá um insert nesta tabela...tem como fazer isto ?

Vlw t+


Michael
   - 04 jan 2006

Olá!

Presumindo que a tabela esteja sendo acessada por um DataSet, basta utilizar a propriedade State. Veja:

#Código

if (DataSet.State <> dsEdit) and (DataSet.State <> dsInsert) then
...


[]´s


Caninha51
   - 04 jan 2006

Eh soh verificar o estado do dataset.
#Código


if not (Table.State in [dsInsert,dsEdit]) then
Table.Insert



Gigatel
   - 04 jan 2006

deixa explicar meu problema para melhor compreensão talvez outra altermativa seja melhor...

no meu programa tem uma parte que joga em um crediário e é possível parcelar este valor....uso duas tabelas para gerar estes valores...uma para servir de base e outra para as parcelas...a tabela de base serve principalmente para gerar um código o de será referencia da tabela de parcelas....uso um page control para navegar entre as opções { PAgamento a vista }, {Parcelado} e outros...no evento on show do parcelado, onde entra a função da tabela base ( que chamo de BD_CONTAS_TPA ) dou um Insert.....quando clico em concluir dou um post na tabela de base e assim gerar um novo código aí que vai concluir a função...O problema é que tem vezes que isto não funciona ( naum sei explicar ) dá um erro que a tablema não esta em modo de edição...daí pensei na idéia deste tópico,... e tem outra como eu colocaria esta função acima ?..

veja o código..

#Código


procedure T_FORM_OS_BX.Button3Click(Sender: TObject);
begin
BD_CONTAS_TPA.Post;
QuickRep3.PrinterSettings.Copies := BD_CONFOSGS_OOC_QDFIO2.value;
QuickRep3.PrinterSettings.Copies := BD_CONFOSGS_OOC_QDFIO4.value;
if DBLookupComboBox1.Text = ´´ then
begin
Showmessage (´É obrigatório seu prenchimento campo "Responsável"´);
abort;
end
else
begin
if MessageDlg(´Deseja dar saída a O.S. do cliente ´ + _FORM_OS_NAV.BD_OFC_ELEGS_OOE_NOME.Value + ´ ?´,mtConfirmation,[mbYes,mbNo],0)<>mrYes then Abort;
if BD_CONT_REC.RecordCount <> 0 then
begin
if Application.MessageBox(´Já foram geradas parcelas para este documento, deseja imprimi-las?´ , ´Imprimir.´, MB_ICONQUESTION + MB_YESNO) = IDYES then
QuickRep3.Print;
end
else
begin
if eddata.Text =´ / / ´ then
Showmessage (´É requerido que o campo data esteja preenchido´)
else if Label28.Caption = ´Não´ then
showmessage(´Atenção !!! Crédito bloqueado.´)
else
begin
if edvalor.text = ´´ then
GeraErroValorTotal
else

Geraparcelas;
end;
end;
end;
end;


será que dá algum galho se eu colocar esta função ? pois ela tem que analizar se a tabela está em modo de insert se num tiver ela tem que dar este insert...caso contraria a função corre normalmente....


flw....