query sonucunu veritabanına kaydetme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
query sonucunu veritabanına kaydetme
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...
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...
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..
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.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
Bunu Rapora vermiş olduğunuz Sql sorgu çıkışını While döngüsü ile rahatca yapabilirsiniz.
Kolay Gelsin...
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.
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Merhabalar
Sanırım şimdi anladım
Eğer yardımcı olabildimse ne mutlu[/code]
Sanırım şimdi anladım

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;
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
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;
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;
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.
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
burda tablo2 de seçtiği alanları tablo 1 deki alanlara yazar. Sıralamayı aynı yapmalısın..
Kolay gelsin..
insert ile select ifadesini birlikte kullanma
Kod: Tümünü seç
INSERT INTO TABLO1 (ALAN1,ALAN2,ALAN3)
SELECT ALAN1,ALAN2,ALAN3
FROM TABLO2
WHERE....
Kolay gelsin..
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...
Tabi query cümleciği kaydedildikden sonraki silinen veya değiştirilen kayıtları cümleciği ikinci çağırdığınızda göremezsiniz...
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.
(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.
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...
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...