Access

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Access

Mesaj gönderen husonet »

Günaydın Arkadaşlar

Database de 10 tane den fazla tablom var. Bir tablonun koduna bakarak 4 tabloda sorgulamak istiyorum. Bunu SQL olarak mı yapayım yoksa taratma şeklindemi yapayım.

Eğer SQL olarak yapın derseniz nasıl bir SQL kodu kullanmalıyım.

Yardımcı olursanız sevinirim.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Oncelikle sunu soylemeliyim ki kesinlikle SQL olarak yapmalisiniz.

Performans acisindan cok farkeder. Belki Access tarzi client server calismayan bir yapida bu performansi farkedemeyebilirsiniz ama aliskanlik olarak sql kullanmanizi hararetle tavsiye ederim.

SQL kodu konusunda yardimci olabilmek icin konu hakkinda biraz detay vermeniz gerekir ne tur tablolar hangi alanlar nasil iliski vs...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Tablonun biri CariKart Tablosu 'Bu Master olacak
diğer biri nakit işlem tablosu 'Bu Detail
diğer biri Faturalar Tablosu 'Bu Detail
diğer biri ÇekSenet tablosu diğer biri 'Bu Detail
Bankalar tablosu hepsi CariKod alanı ile ilişkili 'Bu Detail


Amaç CariKart ların ekstralarını (Hareketlerini dökebilmek)

Ayrıca yardımlarınız için teşekkür ederim.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2384
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Sana tavsiyem CariHareketler diye bir table daha oluştur. Yapılmış hareketlerin özetlerini buraya yaz yani tipi, evrak nosu, tarihi, alacak, borç alanları olsun.
çek table a bir kayıt eklediğinde harekete e de ekle faturada girilse harekete ekle. Bunun avantajı şu olur. cari extresi aldığında alacak ve borc alanlarını sum ile kod yazmadan alabilirsin. diğer taraftanda master olarak bunu kullanarak detailleri görüntülemen kolaylaşırız. bunun içinde DevExpress in MasterDetail gridini kullanabilirsin.
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Verdiğiniz fikir gercekten güzel bir fikir teşekkür ederim. Fakat öteki konuyuda bilmek istiyorum. Öteki konuda yorumlarınız nelerdir. Sizce nasıl yapabiliriz.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2384
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Öteki konu diye kastettiğin nedir ? SQL ise Fahrettin gerekli bir açıklama yapmış, üstat benden çok daha tecrübelidir. Yani bir ustadır. Benim eski ustam şöyle derdi. Çırağın işi kontrol edilir, kalfanınki arada sırada kontrol edilir, ustanınkiyse edilmez. :)
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Selam,

Aslında benim demek istediğim şuydu 1 den fazla tabloda sorgulama SQL ile nasıl yapabilirim kod olarak yazabilirseniz sevinirim.

Teşekkürler.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

yapıyı tam bilmeden zor olacak ama 2 tablo arasında şöyle ilişki kurabilirsin :

SELECT A.*,B.*
FROM A_TABLOSU A, B_TABLOSU B
WHERE A.CARI_KOD=B.CARI_KOD

bu 3 tablo olursa

SELECT A.*,B.*, C.*
FROM A_TABLOSU A, B_TABLOSU B, C_TABLOSU C
WHERE A.CARI_KOD=B.CARI_KOD
AND A.CARI_KOD=C.CARI_KOD

....

ancak Freeman35'in dediğ gibi bir tablon olsa olay çok daha kolay alacak. Böyle SQL ile veya tarayarakta sonuçları alsan, pek istediğin gibi olacağını sanmam.

Kolay gelsin.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2384
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

TTable gibi standart kullanıyorsan property sinden bağlarsan hiç bir kod yazmana gerek kalmaz.
Ben IBX kullanıyorum eski versiyonlarında bu yukarıda yazdığım yöntem arızalı çalışıyordu, bende o yüzden aşağıdaki yöntemi kullanıyorum hala

Formun üzerine DBEdit koy ve bunu master Query nin Primary key fieldına bağla. Visible ınında false yap. DBEdit in OnChange Event'ınada SQL leri yaz

Kod: Tümünü seç

try
DetailQuery.DisableControl;
DetailQuery.SQL.Clear;
DetailQuery.SQL.Add('Select * from xxxx');
DetailQuery.SQL.Add('Where PrKey = :PrKey_');
DetailQuery.Prepare;
DetailQuery.ParamByName('PrKey_').AsInteger := MasterQuery.FieldByName('PrimaryKey').AsInteger;
DetailQuery.Open;
Finally
  DetailQuery.EnableControl;
end;
kodu kafamdan yazdım yazılım hatası olma ihtimali vardır
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
fanibiri
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 08:55
Konum: Antalya
İletişim:

ilginç

Mesaj gönderen fanibiri »

SELECT A.*,B.*
FROM A_TABLOSU A, B_TABLOSU B
WHERE A.CARI_KOD=B.CARI_KOD

Mustafa hoca böyle yazmış.
Datasource ado connection ve Ado dataset kullanıyorum
hepside çok güzel cmd text e girip sql mustafa hocamın kile gibi yapıyorum
iki tablo var bilgi ve musteriler ortak alan muskod (müşteri kodu)
SELECT musteriler.*,bilgi.* FROM musteriler,bilgi WHERE musteriler.muskod=bilgi.muskod
diyorum active hale getirince ADODataset1:field muskod not found diyor hayret ediyorum sadece
SELECT * FROM bilgi,musteriler Dediğim zaman çalışıyor Delphi 6 nın uptadelerini yükledim umarım sorun yapmaz veya ben yanlış yapıyorum Teşekkürler...
Bilenler Lütfen Bilmeyenlere Anlatsın....
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

Hüseyin Abi kayıt sayısıda önemlidir. Birde performansı daha iyi olması için Prepare metodunuda kullanmalısın. SQL Sorgusu ile yapman tabiki mantıklı. Ama sen alternatiflere görede bir test yap istersen. Sorgularda her zaman parametre kullanımı ve prepare kullanımı performansı çok önemli derecede etkiler. Birde geriye dönen kayıt yoksa Querylerin unidirectional özelliği bunu da tek yönlü yapabilirsin.....

Saygılar, Başarılar....
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

Acces Join Komutunu destekliyor mu bilmiyorum. Destekliyorsa join ile yapiniz performans daha iyi olacaktir. Sizin yaptiginiz sekilde büyük performans kaybi olur deniyor. Birnci tablo nun her satiri ikinci tablonun bütün satirlari ile karsilastiriliyor.
miskin
Ve Tanri, bütün kullarini davul edecek :)
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

ender_arslanturk yazdı:Merhaba

Hüseyin Abi kayıt sayısıda önemlidir. Birde performansı daha iyi olması için Prepare metodunuda kullanmalısın. SQL Sorgusu ile yapman tabiki mantıklı. Ama sen alternatiflere görede bir test yap istersen. Sorgularda her zaman parametre kullanımı ve prepare kullanımı performansı çok önemli derecede etkiler. Birde geriye dönen kayıt yoksa Querylerin unidirectional özelliği bunu da tek yönlü yapabilirsin.....

Saygılar, Başarılar....
delphiye başladığım zamanki sorularım bu nerden buldunuz :lol:

Acces ı unutalı yıllar oldu 8) Oracle, Firebird 8)

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ı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bu arada fikirleriniz için teşekkür ederim.

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ı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

ismaillerin icinde erol Tas gülücükleri yollayan eksik.

:)
miskin
Ve Tanri, bütün kullarini davul edecek :)
Cevapla