Aynı field isimlerine sahip iki dbf dosyasını karşılatır

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Delphi08
Üye
Mesajlar: 25
Kayıt: 29 Tem 2004 09:16

Aynı field isimlerine sahip iki dbf dosyasını karşılatır

Mesaj gönderen Delphi08 »

Aynı field isimlerine sahip iki dbf dosyasını karşılaştırıp farklı olan bilgileri üçüncü bir dbf dosyasına nasıl yazdırabilirim...

Yardımlarınız için şimdiden teşekkürler.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

eger dbf'deki butun alanari karsilastiracaksaniz bir dongu icinde her kaydin aynisinin diger tabloda olup olmadigini bir select cümlesi ile karsilastirip diger tabloya farklı kayıtları atmalısınız... Bir tablodaki ilgili kaydin diger tabloda olup olmadigini asagidaki gibi bir cumle ile anlayabilirsiniz where kısmına butun alanları birer kosul oalkra koyup eger KAYIT_SAYISI 0 cikarsa aynı kayıt diger tabloda yok demektir....

Kod: Tümünü seç

Select count(*) as KAYIT_SAYISI
from TABLO2
where ALAN1=1 and ALAN2=35 and AD='Ahmet' ......
Yok eger sadece tek bir alanın iki tablo arasinda karsilastirmasini yapcaksaniz da o zaman bir insert into cümleisni takip eden select cümlesi ile halledebilirsiniz....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Kod: Tümünü seç

where ALAN1=1 and ALAN2=35
Fahrettin abi bu karşılaştırmanın anlamı nedir açıklarmısınız?

Teşekkürler.

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ı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

:)

misal olaraktan verdim.... Yani o an ustunde bulunulan kaydın ALAN1 degeri 1 ise ve ALAN2 degeri 35 ise vs..... bu kaydin diger tabloda olup olmadigi bu şekilde anlaşılır anlamında....

Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Şöyle olabilir :

SELECT * FROM TABLE1, TABLE2 where Table1.ALAN1<>Table2.ALAN1 and table1.ALAN2<>Table2.ALAN2 and table1.ALAN3<>table2.ALAN3 and ... v.s.

gibi bir kod yazın. Yani alanların tümü de eşit olmayanları bulun. Oluşan bu SQL tablosundan 3 ncü table a bir döngü vasıtası ve INSERT INTO kullanarak aktarın...

Ancak Bu şekilde olabilir gibi geliyor bana...

Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Sair bey bu kodun soyle bir dezavantaji var malesef. Bir kartesyen çarpım oluşturacağı için her iki tarafta birbirinden farklı olan kayıt sayilarinin çarpımı kadar sonuç üretir... Fakat belki distinct ile ve sadece tek bir tablodan veri çekmek ile halledilebilir emin olamiyorum denemek lazim....

Bu sonuc elde edilirse bu selectin onune bir insert into koymak yetecektir... Yani dongu olmasina gerek yok...

Kod: Tümünü seç

insert into TABLO1(ALAN1,ALAN2,ALAN3,.... ALAN15)
select ALAN1,ALAN2,ALAN3,.... ALAN15
from ....
where.....
Bu yapı ile bir select cümlesinin sonucu toplu olarak bir tabloya insert edilebilir...

Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Cevapla