Auto Inc. dbExpress

Delphi

21/06/2006

olá pessoal...

estou tentando inserir um registro numa tabela com campo auto increment

cds.close;
cds.commandtext := ´select Codigo,Descricao from Teste´;
cds.open;
cds.insert;
cds.FieldByName(´Descricao´).AsString := ´aaa´;
cds.post;
cds.apllyupdates(0);

Para fazer isso, só botando AutoGenerateValue do campo ´Codigo´ para arAutoInc???

Estou usando o SQL Server e delphi 7


Miuuudo

Miuuudo

Curtidas 0

Respostas

Miuuudo

Miuuudo

21/06/2006

oi de novo...
fiz alguns testes a mais e...

não funciona nem com AutoGenerateValue para arAutoInc e nem colocando Required para false

se coloca Required para false dá ´Field Value Required´
caso contrario diz... ´Field Codigo must have a value´

se eu coloco um valor manual para o campo
cds.FieldByName(´codigo´).AsInteger := 0;
ele não dá erro nenhum e não insere

algum erro meu???


GOSTEI 0
Miuuudo

Miuuudo

21/06/2006

ok ok pessoal...
é o seguinte...
Essas configurações tem que ser nos fields do TSQLQuery e não do TClientDataSet como eu estava fazendo.

ai funciona certo

De vez enquando agente esquece os detalhes...


GOSTEI 0
Miuuudo

Miuuudo

21/06/2006

mas e porém tentei fazer isso dinamicamente...
antes de open eu faço

with TIntegerField.Create(self) do
begin
FieldName := ´Codigo´;
AutoGenerateValue := arAutoInc;
Required := false;
DataSet := qe; //TSQLQuery
end;

cds.Open; //TClientDataSet
cds.Insert;
cds.FieldByName(´Descricao´).AsString := ´nada´;

Aqui dá erro, não consegue achar o Campo ´Descricao´.
Se eu não criasse o TIntegerField ele acharia normalmente.
No caso eu vou teria que criar um TStringFiled com FieldName = ´Descricao´. Ai funcionaria.

igualmente para todos os outros campos da tabela.
eu não quero isso.


GOSTEI 0
Miuuudo

Miuuudo

21/06/2006

meu deus !!!

para inserir um registro numa tabela com campo auto increment dando
insert e post, só editando o SQLQuery em disign time.

não se faz isso dinamicamente.
que beleza...


GOSTEI 0
Paullsoftware

Paullsoftware

21/06/2006

Eu tenho uma rotina que usava na epoca em que eu usava access, ele pode ser útil pra vc... amanhã pela manhã quando eu chegar na empresa eu posto ele aqui.. :wink:


GOSTEI 0
Paullsoftware

Paullsoftware

21/06/2006

tenta usar esse código aqui, eu usei esse tem outro tb...
http://forum.clubedelphi.net/viewtopic.php?t=74130&start=0&postdays=0&postorder=asc&highlight=incrementa
senão conseguir diz que posto outro, mais o outro eu uso com FireBird e não sei se vai funcionar com SQLServer.... mais espero ter ajudado :wink:


GOSTEI 0
Miuuudo

Miuuudo

21/06/2006

olá paull

muito obrigado pela ajuda...
é... isso que vc me mostrou eu faço normalmente.
inclusive eu nunca crio uma tabela com campo auto increment.
mas eu estou convertendo o sistema, e outras pessoas programaram nele.
Não vou poder sair varrendo todos os sistemas da empresa para substituir essa situação. :(

eu teria realmente que mascarar isso. E para isso só dinamicamente.

mas muito obrigado pela atenção.

você sabe de algum texto de alguem que converteu o sistema de bde para dbexpress???
os que achei são bem superficiais.

um abraço
(mostre a segunda maneira)


GOSTEI 0
Miuuudo

Miuuudo

21/06/2006

sobe


GOSTEI 0
POSTAR