Fórum Gravar dados usando o Insert into do SQL com Query? #333864
28/11/2006
0
begin
with dm.ibq1 do
begin
sql.clear;
sql.add(´select * from sind2´);
sql.add(´WHERE (matricula = :pmatricula)´);
parambyname(´pmatricula´).asString := e1.text;
end;
if DM.ibq1.RecordCount > 0 then begin
showmessage(´Exception 1 RESTRIÇÃO Campo Matrícula já existe, Erro na Gravação! Tente Novamente!´);
dm.iBQ1.CLOSE;
dm.IBQ1.OPEN;
E1.SETFOCUS;
end else begin
{comandos de inserção }
if application.messagebox(Pchar(´Deseja Incluir este Associado:´ + #13+ dm.ibq1.FieldByName(´matricula´).AsString +´ ´+ 13+ dm.ibq1.FieldByName(´associado´).AsString), Pchar(´Incluir Dados´+Self.Caption), MB_ICONQUESTION
+ MB_YESNO) = IDYES then begin
//Close;
dm.ibq1.sql.clear;
dm.ibq1.sql.Add(´Insert into sind2´);
dm.ibq1.sql.Add(´matricula, admissao, associado, natural, estado, dtnas, estado, dtnas, estcivil,´);
dm.ibq1.sql.Add(´conjuge, ctps, serie, prevsoc, te, reserv, residencia, pai, mae, nacpai, nacmae,´);
dm.ibq1.sql.Add(´propried, prorpiet, endereco, dtadm, empreg, propri, arrend, boiaf, funcao, remun´);
dm.ibq1.sql.add(´values´);
dm.ibq1.sql.Add(´:matricula, :admissao, :associado, :natural, :estado, :dtnas, :estado, :dtnas, :estcivil,´);
dm.ibq1.sql.Add(´:conjuge, :ctps, :serie, :prevsoc, :te, :reserv, :residencia, :pai, :mae, :nacpai, :nacmae,´);
dm.ibq1.sql.Add(´:propried, :prorpiet, :endereco, :dtadm, :empreg, :propri, :Arrend, :boiaf, :funcao, :remun´);
dm.ibq1.ParamByName(´matricula´).AsString:=e1.text;
dm.ibq1.ParamByName(´admissao´).AsString:=e2.text;
dm.ibq1.ParamByName(´associado´).AsString:=e3.text;
dm.ibq1.ParamByName(´natural´).AsString:=e4.text;
dm.ibq1.ParamByName(´estado´).AsString:=e5.text;
dm.ibq1.ParamByName(´dtnas´).Value:=StrToDate(e6.text);
dm.ibq1.ParamByName(´estcivil´).AsString:=e7.text;
dm.ibq1.ParamByName(´conjuge´).AsString:=e8.text;
dm.ibq1.ParamByName(´ctps´).AsString:=e9.text;
dm.ibq1.ParamByName(´serie´).AsString:=e10.text;
dm.ibq1.ParamByName(´prevsoc´).AsString:=e11.text;
dm.ibq1.ParamByName(´te´).AsString:=e12.text;
dm.ibq1.ParamByName(´reserv´).AsString:=e13.text;
dm.ibq1.ParamByName(´residencia´).AsString:=e14.text;
dm.ibq1.ParamByName(´pai´).AsString:=e15.text;
dm.ibQ1.Parambyname(´mae´).AsString:=e16.text;
dm.ibQ1.Parambyname(´nacpai´).AsString:=e17.text;
dm.ibQ1.Parambyname(´nacmae´).AsString:=e18.text;
dm.ibQ1.Parambyname(´propried´).AsString:=e19.text;
dm.ibQ1.Parambyname(´propriet´).AsString:=e20.text;
dm.ibQ1.Parambyname(´endereco´).AsString:=e21.text;
dm.ibQ1.Parambyname(´dtadm´).Value:=StrToDate(e22.text);
if e23.checked = true then
dm.ibQ1.Parambyname(´empreg´).AsString:=´X´;
if e24.checked = true then
dm.ibQ1.Parambyname(´propri´).AsString:=´X´;
if e25.checked = true then
dm.ibQ1.Parambyname(´arrend´).AsString:=´X´;
if e26.checked = true then
dm.ibQ1.Parambyname(´boiaf´).AsString:=´X´;
dm.ibQ1.Parambyname(´funcao´).AsString:=e27.text;
dm.ibQ1.Parambyname(´remun´).value:=e28.text;
try
dm.ibq1.ExecSql;
dm.ibt2.commit;
dm.ibq1.close;
dm.ibq1.sql.clear;
dm.ibq1.sql.text := ´select * from sind2´;
dm.ibq1.Open;
sbar.SimpleText := ´Dados Incluídos...´;
b1.setfocus;
except
On E:Exception do begin
dm.ibt2.Rollback;
sbar.SimpleText := ´Abortado...´;
Showmessage(´Falha na Inclusão dos Dados!´#1310´Mensagem: ´+E.Message);
end;
end;
end;
end;Pq nao grava, e tambem nao me da mensagem de erro algum? :(
Adriano_servitec
Curtir tópico
+ 0Posts
28/11/2006
Emerson Nascimento
var
instrucao: string;
begin
with dm.ibq1 do
begin
close;
sql.text := ´select * from sind2 where (matricula = :pmatricula)´;
parambyname(´pmatricula´).asString := e1.text;
open; // faltou essa linha
// não use RecordCount, a menos que você queira
// saber exatamente quantos registros foram retornados
if not IsEmpty then
begin
Close;
showmessage(´Exception 1 RESTRIÇÃO Campo Matrícula já existe, Erro na Gravação! Tente Novamente!´);
E1.SETFOCUS;
end
else
{comandos de inserção }
if application.messagebox(
Pchar(´Deseja Incluir este Associado:´ + #13+e1.text+´ ´+13+e3.text),
Pchar(´Incluir Dados ´+Self.Caption),
MB_ICONQUESTION + MB_YESNO) = IDYES then
begin
Close;
sql.text :=
´Insert into sind2 ´+
´ (matricula, admissao, associado, natural, estado, dtnas, estado, ´+
´ dtnas, estcivil, conjuge, ctps, serie, prevsoc, te, reserv, ´+
´ residencia, pai, mae, nacpai, nacmae, propried, prorpiet, ´+
´ endereco, dtadm, empreg, propri, arrend, boiaf, funcao, remun) ´+
´values ´+
´ (:matricula, :admissao, :associado, :natural, :estado, :dtnas, :estado, ´+
´ :dtnas, :estcivil, :conjuge, :ctps, :serie, :prevsoc, :te, :reserv, ´+
´ :residencia, :pai, :mae, :nacpai, :nacmae, :propried, :prorpiet, ´+
´ :endereco, :dtadm, :empreg, :propri, :Arrend, :boiaf, :funcao, :remun)´;
ParamByName(´matricula´).AsString:=e1.text;
ParamByName(´admissao´).AsString:=e2.text;
ParamByName(´associado´).AsString:=e3.text;
ParamByName(´natural´).AsString:=e4.text;
ParamByName(´estado´).AsString:=e5.text;
ParamByName(´dtnas´).Value:=StrToDate(e6.text);
ParamByName(´estcivil´).AsString:=e7.text;
ParamByName(´conjuge´).AsString:=e8.text;
ParamByName(´ctps´).AsString:=e9.text;
ParamByName(´serie´).AsString:=e10.text;
ParamByName(´prevsoc´).AsString:=e11.text;
ParamByName(´te´).AsString:=e12.text;
ParamByName(´reserv´).AsString:=e13.text;
ParamByName(´residencia´).AsString:=e14.text;
ParamByName(´pai´).AsString:=e15.text;
Parambyname(´mae´).AsString:=e16.text;
Parambyname(´nacpai´).AsString:=e17.text;
Parambyname(´nacmae´).AsString:=e18.text;
Parambyname(´propried´).AsString:=e19.text;
Parambyname(´propriet´).AsString:=e20.text;
Parambyname(´endereco´).AsString:=e21.text;
Parambyname(´dtadm´).Value:=StrToDate(e22.text);
if e23.checked then
Parambyname(´empreg´).AsString:=´X´;
if e24.checked then
Parambyname(´propri´).AsString:=´X´;
if e25.checked then
Parambyname(´arrend´).AsString:=´X´;
if e26.checked then
Parambyname(´boiaf´).AsString:=´X´;
Parambyname(´funcao´).AsString:=e27.text;
Parambyname(´remun´).value:=e28.text;
try
ExecSql;
dm.ibt2.commit;
close;
sql.text := ´select * from sind2´;
Open;
sbar.SimpleText := ´Dados Incluídos...´;
b1.setfocus;
except
On E:Exception do
begin
dm.ibt2.Rollback;
sbar.SimpleText := ´Abortado...´;
Showmessage(´Falha na Inclusão dos Dados!´#1310´Mensagem: ´+E.Message);
end;
end;
end;
end;
end;Gostei + 0
30/11/2006
Adriano_servitec
Bom surgiu um pequeno problema que nao estou entendendo com o campo [b:ea30c7628a]NATURAL[/b:ea30c7628a]
No banco de dados criei este campo [b:ea30c7628a]NATURAL sendo VARCHAR 35 (Firebird 2.0)[/b:ea30c7628a]
Ai no SQL esta assim
[b:ea30c7628a]sql.text :=
´Insert into sind2 ´+
´ (matricula, admissao, associado, [color=red:ea30c7628a]natural[/color:ea30c7628a], estado, dtnas, estado, ´+[/b:ea30c7628a]
e no value do SQL assim
[b:ea30c7628a] ´values ´+
´ (:matricula, :admissao, :associado, [color=blue:ea30c7628a]:natural[/color:ea30c7628a], :estado, :dtnas, :estado, ´+[/b:ea30c7628a]
e na passagem de parametros assim
ParamByName(´natural´).AsString:=e4.text;
Nao vi nenhum erro, mais aparece a seguinte mensagem de erro de script do SQL
Bom apartir dai nao grava e fica nessa mensagem, tambem nao sei se existe problemas com os demais campos pois ainda nao passou por esse.
Desde ja agradeço a ajuda;
Adriano
Gostei + 0
30/11/2006
Emerson Nascimento
Gostei + 0
30/11/2006
Adriano_servitec
Obrigado Emerson por respodner, pelo visto [b:a0a1cc619a]RESERV[/b:a0a1cc619a] tambem eh reservado ao Firebird :D [b:a0a1cc619a]Vou trocar pra ver se funciona[/b:a0a1cc619a]
Valeu pela ajuda amigo.
Gostei + 0
30/11/2006
Adriano_servitec
[b:04be588d6e]Falha na Inclusão de Dados, Mengagem: Dynamic SQL Error, SQL Error code -206, Column SIND2.ESTADO, cannot repeated in insert statement at line 1 column 79[/b:04be588d6e]
Gostei + 0
30/11/2006
Emerson Nascimento
sql.text := ´Insert into sind2 ´+ ´ (matricula, admissao, associado, natural, estado, dtnas, estado, ´+ ´ dtnas, estcivil, conjuge, ctps, serie, prevsoc, te, reserv, ´+ ´ residencia, pai, mae, nacpai, nacmae, propried, prorpiet, ´+ ´ endereco, dtadm, empreg, propri, arrend, boiaf, funcao, remun) ´+ ´values ´+ ´ (:matricula, :admissao, :associado, :natural, :estado, :dtnas, :estado, ´+ ´ :dtnas, :estcivil, :conjuge, :ctps, :serie, :prevsoc, :te, :reserv, ´+ ´ :residencia, :pai, :mae, :nacpai, :nacmae, :propried, :prorpiet, ´+ ´ :endereco, :dtadm, :empreg, :propri, :Arrend, :boiaf, :funcao, :remun)´;
altere para:
sql.text := ´Insert into sind2 ´+ ´ (matricula, admissao, associado, natural, estado, dtnas, ´+ ´ dtnas, estcivil, conjuge, ctps, serie, prevsoc, te, reserv, ´+ ´ residencia, pai, mae, nacpai, nacmae, propried, prorpiet, ´+ ´ endereco, dtadm, empreg, propri, arrend, boiaf, funcao, remun) ´+ ´values ´+ ´ (:matricula, :admissao, :associado, :natural, :estado, :dtnas, ´+ ´ :dtnas, :estcivil, :conjuge, :ctps, :serie, :prevsoc, :te, :reserv, ´+ ´ :residencia, :pai, :mae, :nacpai, :nacmae, :propried, :prorpiet, ´+ ´ :endereco, :dtadm, :empreg, :propri, :Arrend, :boiaf, :funcao, :remun)´;
Gostei + 0
30/11/2006
Rinez
Lendo o tópico do Adriano_Servitec sobre o Insert me veio a seguinte pergunta: Como consigo as palavras reservadas do Firebird 1.5?
Alguém pode nos esclarecer?
Gostei + 0
30/11/2006
Adriano_servitec
´ dtnas[/b:b994173f77]
Agora sim ta 100¬, valeu mesmo.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)