Fórum Como Inserir Registro Novo. #39740
28/10/2003
0
Já postei algumas vezes e pelas respostas que obtive não consegui resolver meu problema talvez eu não tenha sido bem claro.
Estou usando interbase e delphi 6.
Tenho o seguinte banco: PRINCIPAL com a tabela OCORRENCIA
Na tabela OCORRENCIA tenho os seguintes campos:
Create table
(
codigo integer not null,
data date,
hora time,
primary key (codigo)
);
Criei um generator:
CREATE GENERATOR CODIGO_GEN;
SET GENERATO CODIGO_GEN TO 1;
e atribui na propriedade FieldsGenerator do IbDataset
Esta tabela é acessada por meio de:
IBdatabase
IBtransaction
IBdataset
IBdatasource
Dbnavigator
Dbedit
Preciso inserir um registro nesta tabela quando um botão é pressionado.
Com os dados DATA e HORA. Os dados que serão inseridos na data e na hora podem estar um edits ou em variáveis.
Dúvidas:
-É absolutamente necessário ter chave primária?
-Não estou conseguindo achar o local adequado para colocar o comando sql INSERT INTO....
Latrodectrus
Curtir tópico
+ 0Posts
28/10/2003
Afarias
Já atualizou o IBX??? não?? FAÇA-O!!
|SET GENERATO CODIGO_GEN TO 1;
Esse código é desnecessário! (bom, deve ser)
|e atribui na propriedade FieldsGenerator do IbDataset
GeneratorField
|Preciso inserir um registro nesta tabela quando um botão é pressionado.
|Com os dados DATA e HORA. Os dados que serão inseridos na data e na
|hora podem estar um edits ou em variáveis.
with IBDataSet do
begin
Append;
FieldByName(´DATA´).AsDate := variavel_date;
FieldByName(´HORA´).AsTime := variavel_time;
Post;
end;
|-É absolutamente necessário ter chave primária?
SIM (mesmo q tecnicamente não!)
|Não estou conseguindo achar o local adequado para colocar o comando
|sql INSERT INTO....
Coloque o SELECT na propriedade SELECTSQL e dê clique com o botão direito sobre o componente IBDataSet - no menu selecione ´Dataset Editor´ -- vc verá duas colunas com campos a lista dos campos -- na esquerda (key fields) selecione apenas sua chave primária (código) e na da direita (update fields) selecione todos os campos.
Então clique em GENERATE SQL -- pronto!! o Update, Delete, Insert e Refresh foi criado!
T+
Gostei + 0
28/10/2003
Latrodectrus
Que fosse apenas incrementado o valor da chave primária. E os outros campos todos com valor null.
Tem como fazer isso?
Gostei + 0
29/10/2003
Afarias
begin
Append;
Post;
end;
ou vc pode usar um INSERT em um IBSQL ::
with IBSQL1 do
try
Transaction.StartTransaction;
SQL.Text := ´INSERT INTO tabela (CODIGO) VAlUES (GEN_ID(generator, 1))´;
ExecQuery;
finally
Transaction.Commit;
end;
T+
Gostei + 0
29/10/2003
Maicon Loffi
Para Funcionar a Inserção e de maneira mais prática eu uso da seguinte forma.
Coloque os componentes
IBDatabase
IBTransaction Ligado ao IBDatabase
Clique Duplo no Componente IBTransaction
Selecione a Opção ´Read Commited´, OK
Propriedades
DefaultAction = TACommitRetaining
AutoStopAction = saCommitRetaining
Coloque
IBQuery1 Ligado ao IBDatabase
IBUpdateSQL1 ligado a IBQuery1
Entre na propriedade SQL do IBQuery1
Selecione a Tabela, OK
Active = True;
(
Clique Duplo no IBQuery1 - Pressione Ctrl+F, Selecione todos os campos e arraste-os para o form - DbEdits para edição
ou
coloque um dbgrid.
)
Clique Duplo no IBUpdateSQL1
Clique em ´Select Primary Keys´
Clique em ´Generate SQL´, OK
No Evento OnDelete / OnPost do IBQuery1 Coloque o Seguinte
IBTransaction.Commitretaing;
Beleza, Sequindo estes passos sua tabela estará funcionando,
Não esqueça de ligar o dbnavigator a um datasource que é ligado ao IBQuery1
Valeu...
Maicon César Loffi
Gostei + 0
29/10/2003
Maicon Loffi
Esqueci de dizer que o IBQuery1 tem a propriedade GeneratorField,
onde se informa o Generator.
Valeu
Maicon César Loffi
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)