Generators em SQL Server, existe?!?
12/11/2004
0
No firebird, usava-os para gerar numeros incrementados de ID, tem como eu fazer isso em SQL Server?
Se Sim, como pego este valor e acrescento mais 1.
no Firebird é select gen_id(generator, 1) from rdb$database
e como seria no SQL Server..?
Desde ja agradeco!
Titanius
Posts
12/11/2004
Marcus.magalhaes
No SQL Server vc irá utilizar colunas IDENTITY, elas fazem o incremento automáticamente.
Ex.:
[color=red:0837abdf62]Create Table TESTE
(
Col1 Int Identity(1, 1) NOT NULL, [/color:0837abdf62][color=green:0837abdf62]-- onde o 1o. valor é o valor inicial e o 2o. é o valor do incremento[/color:0837abdf62][color=red:0837abdf62]
Col2 VarChar(10) NULL
)
GO
Insert Into TESTE (Col2) Values (´teste1´)
Insert Into TESTE (Col2) Values (´teste2´)
Insert Into TESTE (Col2) Values (´teste3´)
Insert Into TESTE (Col2) Values (´teste4´)
Select @@identity [/color:0837abdf62][color=green:0837abdf62]-- recupera o valor que foi inserido em Col1 = 4[/color:0837abdf62][color=red:0837abdf62]
GO
Select *
From TESTE
GO
Drop Table TESTE
GO[/color:0837abdf62]
No exemplo acima, será criada uma tabela que possuirá uma coluna int com valor auto incrementado, [b:0837abdf62]iniciando em 1 e sendo incrementado em 1[/b:0837abdf62].
Em seguida será feita a inserção dos dados informando somente o valor em Col2, pois o valor de Col1 já dado pelo SQL Server.
Sempre para recuperar o ultimo valor inserido em uma coluna identity, usa-se [b:0837abdf62]@@identity[/b:0837abdf62] imediatamente após o insert.
Espero ter ajudado.
Att,
12/11/2004
Titanius
agora outra questoa...
no firebird eu fazia
Var1 := Query1.FieldByName(´NOME´).ASString;
me retornava o conteudo de NOME,
agora no ADO eu uso:
Var1 := Query1.Parameters.ParamByName(´NOME´).Value;
ele me diz q nao existe NOME!
sendo que dei um [b:6ae2ad2adb]select * from Clientes[/b:6ae2ad2adb]
como pode nao Existir?!?
o problema eh q crio o ADOQuery via Codigo em tempo de execucao..
como posso concertar isso?
Desde ja agradeco :D
12/11/2004
Marcus.magalhaes
programação não é comigo, conheço um pouco de VB, pq parei de programar no 5.0 e muito, mas muito pouco de Delphi.
Att,
13/11/2004
Felipe_cduarte
na Query vc deve utilizar o FieldByName() para retornar os campos... o Parameters.ParamByName() é utilizados para parametros... e
exemplo no SQL:
Select Nome
From Clientes
Where Codigo = :Parametro
pra vc pegar o campo ´Nome´ deve fazer:
Query.FieldByName(´Nome´).AsString
para passar o parametro utilize:
Query.Parameters.ParamByName(´Parametro´).Value
[]´s
Clique aqui para fazer login e interagir na Comunidade :)