Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
mssql mastersource
#1
iyi geceler arkadaşlar uzun zaman oldu delphi ile birşeyler yazmıyalı önceden bde var dı onda bir proje yapmıştım lakin şimdi MsSQL ile yapmak istiyorum bir türlü yapamadım eski kaynaktan yararlanayım dedim olmadı her neyse konuya geleyim.
iki tablom var

tablo1
id---int-----premery key
adı---nchar
soyadi - nchar

tablo2
id----int---- premery key
tid---int---
sinif--nchar

ado connect ile bağlantı sağlıyorum adotable1 de tablo1 ve adotable2 de tablo2 var ve tablo2 de mastersource ile tablo1 deki id ile tablo2 deki tid birleştiriyorum. kayıt işlemi yapıyor lakin tablo2 deki tid de tablo1 deki id yazmıyor. bunun bu şekilde olması gerekiyor eski projemde böyle yapmışım dedimya uzun zaman oldu atladığım bir yermi var yoksa MsSQL bu işlemi gerçekleştirmiyormu. bu arada Embarcadero® Delphi 10.3 kullanıyorum şimdiden yardımlarınız size nefes olarak allahım size versin.
Cevapla
#2
mastersource değil de dediğiniz işlemi MSSQL üzerinde foreign key ile yaparsınız.
İki tabloyu foreign key ile bağlarsanız kayıtlar yapılırken diğer tabloya yapılır ve silinirken de tek tablodan silinmez.
Cevapla
#3
Firewall arkadaşım ilgin için teşekkür ederim dediğinin üzerinde araştırıyorum sonucu inşallah buara atacağım.
Cevapla
#4
FiRewaLL arkadaşım iki gündür uğraşuyorum malesef bu iş olmadı tablo2 de ki tid e tablo1 deki id yi yazdıramadım.
Cevapla
#5
(21-07-2020, Saat: 03:46)guvenlik Adlı Kullanıcıdan Alıntı: FiRewaLL arkadaşım iki gündür uğraşuyorum malesef bu iş olmadı tablo2 de ki tid e tablo1 deki id yi yazdıramadım.

Hocam anladığım şu yanlışsa düzeltin.
2 tane tablonuz var
Siz Program üzerinden kayıt gönderdiğiniz de
1. Tabloya kayıtlar girince 2. tabloyada buna bağlı kayıtlar girilecek ve 1. Tablodaki ID kısmını 2. Talodaki TID kısmına yazacaksınız.

Bunu Program üzerinden yapabileceğiniz gibi
SQL üzerinde
1. Tabloya Triger olarak yazabilirsiniz.
1. Tablonun inserted durumunda yani kayıt girildiğikten sonra.
2. Tabloya da o kayıt ile ilişkili verileri yazdırabilrisiniz.
Cevapla
#6
hocam doğrudur aynen öyle yapacağım bir şeyler yaptım müsait olunca bir bakın sorunum şimdi başka oldu

USE [deneme]
GO
/****** Object: StoredProcedure [dbo].[sp_tablo_insert] Script Date: 22.07.2020 00:03:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[sp_tablo_insert]
(
@adi nchar(10),
@soyadi nchar(10),
@sinif nchar(10)
)

As

Begin
insert into tablo1 (adi,soaydi) values (@adi,@soyadi)
declare @tid int
set @tid = SCOPE_IDENTITY()
insert into tablo2 (tid,sinif) values ( @tid, @sinif)
End

Exec sp_tablo_insert 'ali','veli','deli'

bunu girince

tablo1
id adi soyadı
1020 ali veli

tablo2
id tid sınıf
1 1020 deli

bu şekilde kayıt yapıyorum

amacım ise

bu öğrencı 1 den fazla sınıfa girip ders alıyorsa ne yapacağım

Exec sp_tablo_insert 'ali','veli',('deli','zeka','fizik') gibi

sonuc olarakta

tablo1
id adi soyadı
1020 ali veli

tablo2
id tid sınıf
1 1020 deli
2 1020 zeka
3 1020 fizik

olması inşallah anlatabilmişimdir. bu arada Exec sp_tablo_insert 'ali','veli',('deli','zeka','fizik') buradaki kod çalışmıyacak temsili "deli zeka fizik " olanyeri böyle gönderip yapmak mı daha mantıklı yada

Exec sp_tablo_insert 'ali','veli','deli' kaydettikten sonra
Exec sp_tablo_insert '','','zeki'
Exec sp_tablo_insert '','','fizik'
diye devam edip tablo1 deki son id yi alıp altına bunları yazmak mı daha mantıklı onu çözmeye çelişiyorum.

kusura bakma biraz uzun oldu ama başka türlü derdimi anlatamam diye düşünüyorum. hakkını helal et
Cevapla
#7
Alıntı:bu şekilde kayıt yapıyorum

amacım ise

bu öğrencı 1 den fazla sınıfa girip ders alıyorsa ne yapacağım


İnsert procedurunde önce kontrol edin.
2. Tabloya Ekleyeceğiniz zaman eğer bu ID var ise
yani 1. tablodaki Id ikinci tabloda TID kısmında var ise
O zaman bu öğrenci her hangi bir sınıfa kayıtlıdır.
O zaman diğer sınıflar için kayıtlarını sadece 2. Tabloya insert ettirin.
Bunun için program üzerinden bir sorgu yaparak gelen değer True ise 2. Tabloya gönder değilse 1 tabloya
MSSQL üzerinden Exist ile kontrol ederek yapabilrisiniz
MSSQL üzerinde de Procedurede IF ile kontrol edebilirsiniz
MSSQL üzerinde MERGE ile yapabilirsiniz.
Cevapla
#8
Create Proc [dbo].[sp_tablo_insert]

(
@adi nchar(10),
@soyadi nchar(10),
@sinif nchar(10)
)

As

Begin

if  @adi != '' 
begin
insert into tablo1 (adi,soaydi) values (@adi,@soyadi)
declare @tid int
set @tid = SCOPE_IDENTITY()
insert into tablo2 (tid,sinif) values (@tid,@sinif)
end

if  @adi = '' 
begin
insert into tablo2 (tid,sinif) values ((select top 1 id from tablo1 order by  id desc), @sinif)
end

End

exec sp_tablo_insert 'elif','pala','a sınıfı'
exec sp_tablo_insert '','','b sınıfı'
exec sp_tablo_insert '','','c sınıfı'

sql tarafında böyle bir çözüm buldum.  bunu şimdi adostoreproc ile bağlayıp delphiden gönderince olacaktır.

ilgin için teşekkürler
Cevapla
#9
(22-07-2020, Saat: 15:59)guvenlik Adlı Kullanıcıdan Alıntı:
Create Proc [dbo].[sp_tablo_insert]

(
@adi nchar(10),
@soyadi nchar(10),
@sinif nchar(10)
)

As

Begin

if  @adi != '' 
begin
insert into tablo1 (adi,soaydi) values (@adi,@soyadi)
declare @tid int
set @tid = SCOPE_IDENTITY()
insert into tablo2 (tid,sinif) values (@tid,@sinif)
end

if  @adi = '' 
begin
insert into tablo2 (tid,sinif) values ((select top 1 id from tablo1 order by  id desc), @sinif)
end

End

exec sp_tablo_insert 'elif','pala','a sınıfı'
exec sp_tablo_insert '','','b sınıfı'
exec sp_tablo_insert '','','c sınıfı'

sql tarafında böyle bir çözüm buldum.  bunu şimdi adostoreproc ile bağlayıp delphiden gönderince olacaktır.

ilgin için teşekkürler

Çözüm yollarından birim Smile
Olacaktır böylede
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MsSQL Geri Yükleme theSinan 6 1.764 10-02-2020, Saat: 18:15
Son Yorum: adelphiforumz
  FireDac ile Mssql Veritabanı Adı sorunu serdar 9 2.471 15-01-2020, Saat: 23:22
Son Yorum: otonomi
  Delphi içinden ve MSSQL üzerinden storeprocedure çalıştırma Bay_Y 6 2.711 30-08-2018, Saat: 13:10
Son Yorum: Bay_Y
  Community Edition Firedac Mssql hakkında quake16 9 3.771 25-07-2018, Saat: 01:30
Son Yorum: KUNTAY
  Uniconnection mssql bağlantı hatası pro_imaj 3 1.922 13-01-2018, Saat: 13:27
Son Yorum: pro_imaj



Konuyu Okuyanlar: 1 Ziyaretçi