Tablodan tabloya veri aktarma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
canan35
Üye
Mesajlar: 11
Kayıt: 09 Ağu 2010 11:51

Tablodan tabloya veri aktarma

Mesaj gönderen canan35 »

Başıma ağrılar girdi aramaktan...
Arkadaşlar özetle şunu yapmam lazım.
İki şubeden birini kapattık ve kapanan şube müşteri tablosundaki müşteri bilgilerini hazırdaki müşteri tabloma aktarmam lazım

1-
mus_no adı soyadı adres tel cep tel
1 aaa bbb ooo 11 533
2 bbb ccc ddd 22 533
3 ccc ııı ...........

2-
mus_no adı soyadı adres tel cep tel
1 aaa bbb ooo 11 533
2 bbb ccc ddd 22 533

yukarıda 2 nolu müşzeri tablosunu aktarırken MUS_NO +4+5 olarak devam edecek bir aktarım nasıl olmalı
MUS_NO olmamış olsa aktarımda sorun yok ama burada takıldım.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Tablodan tabloya veri aktarma

Mesaj gönderen aslangeri »

s.a.
önce ikinci tablodaki mus_no alanını update et,(+10000 olabilir tablonuzdaki kayıt sayısına bağlı)
sorasını halledersin...
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
canan35
Üye
Mesajlar: 11
Kayıt: 09 Ağu 2010 11:51

Re: Tablodan tabloya veri aktarma

Mesaj gönderen canan35 »

var
d:Integer;
begin
d:=form1.musteri1.FieldValues['MUS_NO'];

ADOQ1.Open;

While Not musteri1.Eof do

musteri1.Last;
musteri1.insert;

musteriMUS_NO.AsInteger:= d+1;

musteri1.FieldByName('ADI').AsString:=ADOQ1.fieldbyname('ADI').AsString;
musteri1.FieldByName('SOYADI').AsString:=ADOQ1.fieldbyname('SOYADI').AsString;
musteri1.FieldByName('TELEFON').AsString:=ADOQ1.fieldbyname('TELEFON').AsString;
musteri1.FieldByName('ADR').AsString:=ADOQ1.fieldbyname('ADR').AsString;
musteri1.Post;
ADOQ1.Next;

Musteri2 tablosundan mus_no almadan sadece belirli alanları almaya çalışaşarak butona bu kodu yazdım ama, tüm kayıtları aktarmadı, sorun nerede olabilir...
canan35
Üye
Mesajlar: 11
Kayıt: 09 Ağu 2010 11:51

Re: Tablodan tabloya veri aktarma

Mesaj gönderen canan35 »

declare @M_NO decimal
select @M_NO=MAX(MUS_NO)+1 FROM MUSTERI1

INSERT INTO MUSTERI1 (MUS_NO,ADI, SOYADI)

SELECT @MUS_NO,ADI,SOYADI FROM MUSTERI2

bu kod ilede MUSTERI1 DEKİ SON KAYDI 1 ARTIRIP MUSTERİ2 DEKİ KAYITLARIN HEPSİNİ AKTARIYOR AMA AKTARILAN KAYITLARIN MUS_NO ları hepsine aynı numarayı veriyor
yani
MUSTERI1 DEKİ son MUS_NO 1000 ise aktarılan tüm kayıt numaralırına 1001 veriyo :S
canan35
Üye
Mesajlar: 11
Kayıt: 09 Ağu 2010 11:51

Re: Tablodan tabloya veri aktarma

Mesaj gönderen canan35 »

s.a.
Sorun aşağıdaki kodlarda hatayı giderince çözüldü,

Kendime ve aslangeriye teşekkürler.
Demekki sakin kafa ile uğraşmak gerekiyormuş, yukarıda başıma ağrılar girdi demiştim ya, evet ağrılı bir şekilde nerede hata yaptığımı bile göremez hale gelmişim, biraz hırs yaptım :oops: Çoğu kişi için basit bir işlem ama, bizde öğrencez...
var
d:Integer;
begin
//d:=form1.musteri1.FieldValues['MUS_NO'];///// burada değil

ADOQ1.Open;

While Not ADOQ1.Eof do ///yukarıda (musteri1)
d:=form1.musteri1.FieldValues['MUS_NO']; //// burada olmalı
musteri1.Last;
musteri1.insert;

musteriMUS_NO.AsInteger:= d+1;

musteri1.FieldByName('ADI').AsString:=ADOQ1.fieldbyname('ADI').AsString;
musteri1.FieldByName('SOYADI').AsString:=ADOQ1.fieldbyname('SOYADI').AsString;
musteri1.FieldByName('TELEFON').AsString:=ADOQ1.fieldbyname('TELEFON').AsString;
musteri1.FieldByName('ADR').AsString:=ADOQ1.fieldbyname('ADR').AsString;
musteri1.Post;
ADOQ1.Next;
BarBarBakBulBilBad
Üye
Mesajlar: 1
Kayıt: 26 Eyl 2016 09:54

Re: Tablodan tabloya veri aktarma

Mesaj gönderen BarBarBakBulBilBad »

Önce birinci tablodaki kayıt sayısını sorgula sonra ikinci tablodaki kayıt sayısını sorgula ve ilk tablonun kayıt sayısından ikinci tablonun kayıt sayısına kadar döngü oluştur, döngünün içerisinde ikinci tabloyu listelet, oradan gelen bilgileri birinci tabloya insert et ve ikinci tabloyu listelettiğin sorguda bir sonraki kayıda next yoluyla yeniden konumlan, böylece tüm kayıtları atmış olursun, sql kullanarak yapmanı öneririm..
Cevapla