query sonucunu veritabanına kaydetme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

query sonucunu veritabanına kaydetme

Mesaj gönderen ASE »

Arkadaşlar Merhaba Herkese Kolay Gelsin
Ben veri tabanından bazı alanları query ile filtreleyerek Bir gride ve rapora gönderiyorum. Aynı zamanda bu sorgu sonucun başka yerlerde kullanmam gerekiyor. Bu yüzden griddeki bilgileri farklı bir veri tabanı tablosuna kaydetmek istiyorum. Yardımlarınıza ihtiyacım var.
Hoşcakalın. Kolay gelsin...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Merhabalar

Yapmak istediğiniz işi ne zaman yapmak istediğinizde önem taşımaktadır. Mesela sorgulama yapıldıkdan sonra üzerinde (örneğin gridde) değişiklik yapıldığı takdirde değişkliklerle birlikte başka bir veritabanına kayıt etmekmi yoksa sadece sorgulama sonuçlarını direkt başka bir veritabanına kaydetmek mi istediğiniz önem taşıyor.. (Galiba soruyu tam olarak anlayamadım)

Ayrıca ikinci veritabanınız mevcutmu yoksa onları çalışma zamanındamı oluşturacaksınız..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Sorgu sonucunda hiç bir değişiklik yapılmıyor
Veri tabanı mevcut query ile üretilen alanlar veri tabanında mevcut. Sadece sonuçları veri tabanına kaydetmem gerekiyor..
Sanırım anlatabildim...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bunu Rapora vermiş olduğunuz Sql sorgu çıkışını While döngüsü ile rahatca yapabilirsiniz.

Kod: Tümünü seç

Query1.Close
Query1.Sql.Clear;
Query1.Sql.Add('Select * From Tablo Where Carikod =: CariSor');
.........

//Sql işlemi bittikten sonra kayıt olup olmadığını sorarsınız.
if Query1.RecordCount > 0 Then
Begin
     Query1.First;
     While not Query1.Eof Do
     Begin
            //Kayıtları da başka tablolara burada aktarırsınız.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Merhabalar

Sanırım şimdi anladım :oops:

Kod: Tümünü seç

// Sizin sorgulamanız farklı olabilir
     Query1.SQL.Text:='SELECT * FROM UYELER.DB';
     Query1.ExecSQL;
     Table1.Open;
     Query1.Open;
     Query1.First;
     While Not Query1.Eof Do
     Begin
          Table1.Append;
          Table1.FieldByName('Ad').AsString:=Query1.FieldByName('Ad').AsString;
          Table1.Post;
          Query1.Next;
     End;
Eğer yardımcı olabildimse ne mutlu[/code]
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Arkadaşlar hepinize teşekkür ederim.
Hüsonet ve Forumdaki en yeni arkadaşlarımızdan TRSoft kardeşlerim çok sağolun. Ben Problemi çözdüm. Sorunsuz çalışıyor. Benim yazdığım kodda tip çakışması varmış. .asstring problemi çözdü. Kodu aynen aşağıya yazıyorum. İnşallah başkalarının işine de yarar.
Çok sağolun. KOlay gelsin...



begin
if adoQuery1.RecordCount > 0 Then
Begin
adoQuery1.First;
While not adoQuery1.Eof Do
Begin
ADOTABLE1.Active:=TRUE;
ADOTABLE1.Edit;
ADOTABLE1.FieldByName('ISIM').AsString:=adoquery1.FieldByName('MUSTERI').AsString;
ADOTABLE1.FieldByName('ALACAK').AsString:=adoquery1.FieldByName('BAKIYE').AsString;
ADOTABLE1.Append;
ADOQUERY1.Next;
end;
END;
END;
END;
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Sevgili ASE Probleminizi çözüp bilgi verdiğiniz için Teşekkür Ederiz.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Segili ASE, bir de pratik kullanım olarak şunu önerebiliriz (daha önce Fahrettin Bey bu yöntemi yazmıştı başka bir soruda) :

insert ile select ifadesini birlikte kullanma

Kod: Tümünü seç

INSERT INTO TABLO1 (ALAN1,ALAN2,ALAN3)
SELECT ALAN1,ALAN2,ALAN3
FROM TABLO2
WHERE....
burda tablo2 de seçtiği alanları tablo 1 deki alanlara yazar. Sıralamayı aynı yapmalısın..

Kolay gelsin..
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Naile Hanım Teşekkür ederim. Aslında dün benim yazdığım kod işimi fazlasıyla görüyor ama sizin dediğinizide deneyeceğim. Kolay Gelsin.
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
şimal
Kıdemli Üye
Mesajlar: 516
Kayıt: 10 Kas 2003 09:36
Konum: ANKARA

Mesaj gönderen şimal »

Aslında her sorgu sonucunu bir veritabanına kaydetmekdense query cumlenizi veritabanına kaydedip sorgu istediğiniz yerlerde bu cümleciği tekrar çağırmanız daha kolay olur. Hem veritabanınız şişmez hemde size daha hızlı sonuç döndürür...
Tabi query cümleciği kaydedildikden sonraki silinen veya değiştirilen kayıtları cümleciği ikinci çağırdığınızda göremezsiniz...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

tüm yazılanları okumamakla birlikte sorunun en basit cevabı; en azından anladığım kadarıyla

(oracle da)
create table emp2 as select * from employee where last_name like '%i%'

ile sorgunun içeriğini yeni bir tablo oluşturup içine atmak.

ayrıca create view ..

CREATE VIEW name [(view_col [, view_col …])]
AS <select> [WITH CHECK OPTION];

ile de (her ne kadar veritabanını yazmadıysanız da.. ) oluşturacağınız bir view ile de olayı çözebilirsiniz. bu view (yapısına bağlı olarak) tablo gibi kullanabilirsiniz. İlk yöntem daha perfomanslı olur.
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Arkadaşlar Merhaba
Betty_tr söylediğin yöntem normal SQL sorgulamaları için doğru ve geçerli bir yöntem ancak burada özel bir durum söz konusu bu bilgilerin yanına başka tablolardan da bilgi alıunarak karşılaştırma yapılıyor ayrıca SQL her çalıştırılmasında tablo boşaltılıp veriler tekrar güncel olarak tabloya alınıyor yani veri tabanının şişmesi gibi birşey söz konusu değil.
Ayrıca Recep abi sanırım ilk defa benim mnesajlarımdan birine cevap yazdı. Sağolsun. Onun söylediği yöntemde güzel bir yöntem ancak benim veri tabanım zaten varolduğu için sanırım bu olayda kullanmaya gerek yok ama bundan sonra eminim çok işime yarayacak.
Herkese Teşekkürler.
Kolay gelsin...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Cevapla