MS SQL'den Parametre dondurmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

MS SQL'den Parametre dondurmek

Mesaj gönderen adelphiforumz »

Merhabalar

Delphi içerisinden TADOStoredProc componetini kullanarak Sql serverda bir insert işlemi yaptırıyorum.
Bu islem sonrasında oluşan autonumber değerini delphiye geri döndürmek istiyorum fakat başaramadım.
konu hakkında bilgisi olanın yardım etmesini rica ederim.

Teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: MS SQL'den Parametre dondurmek

Mesaj gönderen aslangeri »

s.a.
bunun için insert işlemini yapan bir sp hazırlayacaksın. sp de en son insert edilen değeri (@@identity olması lazım) seçip sp de geriye döndüreceksin.
delphi tarafındanda exec değil open diyeceksin. adosp ile olurmu bilmiyorum ama adocommand ve adoquery ile olur.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: MS SQL'den Parametre dondurmek

Mesaj gönderen adelphiforumz »

Merhabalar
benim sqlde bildigim geri donus icin gereken tum parametre yontemlerini denedim yapamadım
denedigim yontemler

ALTERPROCEDURE [dbo].[SPI_TEST]
@XF varchar(50),
@XOUT int OUT
AS
begin
INSERTINTO TTEST(XF)Values(@XF)
--Return @@identity
--Set @XOUT =@@identity
end

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOSPI.Close;
ADOSPI.Parameters.ParamByName('@XF').Value := Edit1.Text;
ADOSPI.ExecProc;
Button1.Caption := FloatToStr(ADOSPI['@RETURN_VALUE']);
// ADOSPI.ExecProc;
// Button2.Caption := FloatToStr(ADOSPI['@XOUT']);
end;

basaramadim bunun disinda bildigin bir yontem varsa yardimci olmanı rica ederim.
ozellikle delphi tarafındaki kısım nasıl olacak
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: MS SQL'den Parametre dondurmek

Mesaj gönderen aslangeri »

ben procedureyi şu şekilde yapıyorum

Kod: Tümünü seç

ALTERPROCEDURE [dbo].[SPI_TEST]
@XF varchar(50)
AS
begin
INSERTINTO TTEST(XF)Values(@XF)
select @@identity --bu şekilde geriye tek sütunlu bir dataset dönüyor.
end
programdada ado queryde prosedürü çağırıyorum. open dediğim zaman sonuç geliyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: MS SQL'den Parametre dondurmek

Mesaj gönderen adelphiforumz »

SQL tarafında tanımlanması gereken ornek

Dosya olusturmak icin gereken ornek
CREATE TABLE [dbo].[TTEST] (
[XAUTO] [int] IDENTITY (1, 1) NOT NULL ,
[XF] [varchar] (50) COLLATE Turkish_CI_AS NULL
) ON [PRIMARY]
GO


Gereken Store Procedure Ornegi
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[SPI_TEST]
@XF varchar(50)
AS
begin
INSERT INTO TTEST(XF) Values(@XF)
SELECT scope_identity() AS SONUC
end


DELPHİ tarafında yapılması gereken
procedure TForm1.Button1Click(Sender: TObject);
var
x:Integer;
begin
ADOSPI.Close;
ADOSPI.Parameters.ParamByName('@XF').Value := Edit1.Text;
ADOSPI.OPEN;
x := ADOSPI.FieldByName('SONUC').AsInteger;
button1.caption := floatTostr(x);
end;
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Cevapla