Array
(
)

Generators em SQL Server, existe?!?

Titanius
   - 12 nov 2004

Olá pessoal, como sabem estou reescrevendo meus codigos para acessar SQL Server... porem me deparei num prolema. GENERATORS

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!

Marcus.magalhaes
   - 12 nov 2004

Boa tarde Titanius.

No SQL Server vc irá utilizar colunas IDENTITY, elas fazem o incremento automáticamente.

Ex.:
Create Table TESTE
(
Col1 Int Identity(1, 1) NOT NULL, -- onde o 1o. valor é o valor inicial e o 2o. é o valor do incremento
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 -- recupera o valor que foi inserido em Col1 = 4
GO

Select *
From TESTE
GO

Drop Table TESTE
GO

No exemplo acima, será criada uma tabela que possuirá uma coluna int com valor auto incrementado, iniciando em 1 e sendo incrementado em 1.
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 @@identity imediatamente após o insert.

Espero ter ajudado.

Att,

Titanius
   - 12 nov 2004

Valeu cara...

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 select * from Clientes

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

Marcus.magalhaes
   - 12 nov 2004

Oi Fellipe,

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,

Titanius
   - 12 nov 2004

valeu manow... vou postar lah no delphi...

Felipe_cduarte
   - 13 nov 2004

Fala cara,

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

Titanius
   - 15 nov 2004

Valeu manow..!