Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen emin_as »

O tablo yapısı ile istedğini yapman çok zor, yani epey ugraşman gerekiyor.

Genelde bu tür programlarda yapıyı tasarlarken tarihe göre sıralama yapabilecek şekilde tablo yapısını kurarsın. Tablolarında tarih bilgisi ay ve yıl olarak tutuluyor. Ay kısmını integer tutsan belki sorun basit olurdu, ama yazı olunca işin içinden çıkmak zor oluyor. Çünkü aya göre sırala deyince, senin tablonda söyle bir sıralama olacak AGUSTOS, ARALIK, EKIM, EYLUL, HAZIRAN vs gibi ilgisiz bir liste çıkacak. Bu şekilde devam edeceksen özel bir ay tablosu oluşturup, orada ayların sırasını integer olarak tutarak, bu tabloya join etmen lazım.

Ay tablosu :
id - Adi
1 Ocak
2 Şubat
3 Mart gibi

Böylesi ek tabloyla, sıralama yapabilirsin. Daha basiti ise ay ve yıl kısmını atıp, dogrudan datetime kullanabilirsin. Bu sıralamayı basitleştirip, işlemleri kolaylaştırır.

select kim, sum(borc- odeme) from hesap where tarih < '01/05/2009' komutunu verip, tek sql satırda belirtilen tarih öncesi kalan borcu görebilirsin. Bunu yapamıyorsun çünkü tablo yapın bu işlere uygun degil.

Gelelim diğer konuya, ben sana vazgeç demiyorum, bu şekilde körleme gidecegine, 2-3 gün sql ile ilgili kitap oku, tablolar nasıl tasarlanır, normalizasyon nedir bunları kavra. Yoksa buradan birisinin sana vereceği kodla sadece günü kurtarırsın. Ama programı sen yazmış olmazsın, yeni bir ekleme gerekirse, yine bir yerlerden kod bulmak zorunda kalırsın. Olayın özünü kavraman için çok okumalı ve deneme yapmalısın.
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen pelitt »

senin tablonda söyle bir sıralama olacak AGUSTOS, ARALIK, EKIM, EYLUL, HAZIRAN vs gibi ilgisiz bir liste çıkacak.
yok yine anlamamışsınız artık son çare olarak video çekip yollayacağım sen bu sıralamanda belki haklısın ancak bana bu ayların ocaktan şubata kadar sıralanması lazım değilki bana
ah ah ne kadar zor bi meseleymiş dert anlatmak yaaaa hiç okumuyorsunuz yazdıklarımı ha

ben dedimki son mesajın sonunda gurub ladığım zaman 36 üyem olduğu için 36 satır kayıt geliyor hepsinin ayı yılı aidat ı vs. ilk 1....36 ya eşit oluyor bu ilk 1....36 nın ayını ekim yap ekime eşit oluyor

eğer guruplamasam hesap yapılmıyor herkesin hesabı birbirine karışıyor
Select UYE.ADI,UYE.BLOK,HESAP.AIDAT, HESAP.AODEME,HESAP.YAKIT,HESAP.YODEME, HESAP.AY, HESAP.YIL, HESAP.NOTC, HESAP.ID, sum(HESAP.AIDAT),'+'sum(HESAP.AODEME), sum(hesap.aidat-hesap.aodeme) as aidatk, sum(HESAP.YAKIT), sum(HESAP.YODEME), sum(hesap.yakit-hesap.yodeme) as yakitk , CASE WHEN YIL='''+COMBOBOX1.text+''' AND AY='''+COMBOBOX2.text+''' then '+'sum(hesap.aidat-hesap.aodeme) else 0 End AS aidatiko From UYE, HESAP Where UYE.ID=HESAP.KIM group by hesap.kim
Burayı okumadan geçmeyin diğer yerler ek bilgi olsun diye yazdım...
bu kodu çalıştırdığımda guruplama sonunda grup by hesap.kim olunca tüm aynı kim noya sahip üyeler birleşiyor 1....36 ya kadar bir liste çıkıyor bu listenin hesap kısmı tam istediğim gibi oluyor tüm ay ve yılları kapsayan bir sonuç çıkıyor fakat seçilen aya gidilemiyor nedeni çok basit çünkü birleştirme sonucu ay sutunu değerleri aşşağıdaki hesap tablosundaki ilk 1.....36 nın ay değerlerini alıyor yani tek bir ay oluyor ve başka bir ay bulunamıyor aidat ta ilk 1...36 nın aidatı oluyor diğerleride ilk 1...36 ya eşitleniyor bugüne kadar verilen kodlarla bunuda hallettim istediğim ayın aidatını görüyom fakat buseferde hesaplar sadece o ay için yapılmış oluyor

uye tablosu
id
1
.
.
.
36 ya kadar

hesap tablosu
kim
1
.
.
.
36
.
.
.
1
.
.
.
36
.
.
.
1
.
.
.
36 böyle devam ediyor

Yukarıda resimdeki borç sutunu değerlerini uye tablosunda oluşturduğum sutuna veya kodlarla oluşturulacak sutuna satırı satırına kaydetme şansım varmı böle bişey varsa çok basit şekilde çözülecek bu sorun
veya
sum(hesap.aidat-hesap.aodeme) as aidatk from uye,hesap Where UYE.ID=HESAP.KIM group by hesap.kim) as borc,( SELECT sum(hesap.yakit-hesap.yodeme) as yakitk from uye,hesap Where UYE.ID=HESAP.KIM group by hesap.kim) as borc2 From UYE, HESAP Where UYE.ID=HESAP.KIM and YIL='2009' AND AY='EYLÜL' group by hesap.kim
buna benzer sorgu ile ben yapamadım belki fikir verir
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen emin_as »

Okudum, ama ne yapmak istediğini hala anlamış degilim. O sql sorgunun sonuç vermiş olmasını bile şaşırtıcı geliyor, normal bir sql programının o şekildeki grouplama da hata vermesi gerekir.

Bir aya ait borcu ögreneceksen, geçmiş ayların toplamını da gözönünde tutmalısın. Yani mayıs ayındaki borcu ögrenirken, nisandaki, marttaki eksik ödemeler de hesaplanmalıdır. Yok ben sadece ay üzerinden hesap yapacagım, diğer ayları hesaba karıştırmayacagım diyorsan, o zaman grouplandırmaya yılı ve ayı da katmalısın.

select kim,ay,yil, sum(borc-odeme) from hesap group by kim,ay,yil

Yukarıdaki sql sorgusu aylar bazında hesap yapacaktır. Diğer aylardaki hesabı gözönüne almaz.

Eğer bu şekildeki bir hesap işini görecekse, diger alanları da sql e ekleyeyip, listeni oluşturabilirsin.

Bir ihtimal soruyu da sorunu da anlamamış olabilirim. Yaptığın işlem bana çok karışık geliyor.
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen pelitt »

Bir aya ait borcu ögreneceksen, geçmiş ayların toplamını da gözönünde tutmalısın. Yani mayıs ayındaki borcu ögrenirken, nisandaki, marttaki eksik ödemeler de hesaplanmalıdır. Yok ben sadece ay üzerinden hesap yapacagım, diğer ayları hesaba karıştırmayacagım diyorsan, o zaman grouplandırmaya yılı ve ayı da katmalısın.
Aslında aynı şeyi konuşuyoz tamam işte bende mayıs ayındaki borcu ögrenirken, nisandaki, marttaki eksik ödemeler de hesaplansın istiyom ancak
mayıs ayındaki borcu öğrenmek için aylardan mayısı vs. seçtiğimde açılmıyor(illaki ilk kayıtta hangi ay varsa onu seçince listeleniyor) yada dediğiniz gibi sadece mayıs ayı kalanını veriyor.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen conari »

45 mesaja kadar ulaşmış, sorun da demek ki anlaşılamayan&anlatılamayan bir şey var.
Bence Sen excel dosyasına tabloları yaz.

bir sayfasına da görmek istediğin görüntüyü yaz. Ona göre bizde SQL i oluşturalım bitsin bu problem artık:D
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen pelitt »

aynısını buraya yazdım anlaşılmadı en iyisi ben video dersler gibi videoda anlatayım link vereyim ordan izleyin
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen emin_as »

Bu tablo yapısı değişmedikçe eski aylardaki ödemeyi hesaplattırman çok zor, çünkü aylara göre sıralama yapamazsın. Ayları integer veya ödeme tarihlerini date olarak tutmalısın. Yol yakınken tablo yapını degiştirmeni öneririm. Bu tablo yapısıyla çok yol alamazsın.

Stok, ambar, ticari gibi programları yazarken, ilk başlanılması gereken yer raporlardır. Raporların ne olacağı girilmesi gerekenleri belirler. Şu rapor için şu alanlara ihtiyaç var diyerek, tabloları oluşturur ve optimize edersin. Daha sonra temel kayıtların ve hareketlerin yapılacağı tabloları oluşturursun. Raporlar için elden geldiğince sql kullanman gerekir, sql sunucuda çalışacagı için programın verimini artıracaktır.

Tabii tüm bu işleri yapabilmek için temel sql bilgilerinin de olması gerekir. Sql de sorgulama nasıl yapılır, tablolar nasıl bağlanır, gruplandırma vs gibi temel konulara azçok hakim olmalısın.

İngilizcen varsa, sql konusunda genel bilgiler veren aşagıdaki siteye bir gözat, olmadı türkçe siteleri google ile ara.
http://www.w3schools.com/sql/default.asp
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen pelitt »

arkadaşlar biraz ufak oldu ama yinede anlaşılıyor 4mb lık bir swf dosyası izleyin busefer anlaşılacağımı ümit ediyom zaten seslede anlattım
oradaki kullanılan koduda vereyim
Select UYE.ADI,UYE.BLOK,HESAP.AIDAT, HESAP.AODEME,HESAP.YAKIT,HESAP.YODEME, HESAP.AY, HESAP.YIL, HESAP.NOTC, HESAP.ID, sum(HESAP.AIDAT),'+'sum(HESAP.AODEME), sum(hesap.aidat-hesap.aodeme) as aidatk, sum(HESAP.YAKIT), sum(HESAP.YODEME), sum(hesap.yakit-hesap.yodeme) as yakitk , CASE WHEN YIL='''+COMBOBOX1.text+''' AND AY='''+COMBOBOX2.text+''' then '+'sum(hesap.aidat-hesap.aodeme) else 0 End AS aidatiko From UYE, HESAP Where UYE.ID=HESAP.KIM group by hesap.kim
swf izleme linki
http://www.ebaumsworld.com/flash/play/80658175/
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen sabanakman »

Sorudan anladığım kısaca, seçilen ayın aidatı tutarı gelmeli ama geçmiş tüm dönem kayıtlarından aidat borçlarınının toplamını bulmak galiba :Noops . Bu işlem için bir tarih alanı şart. Ay adı alanı ile tarihsel olarak kıyaslama yapmak pek mümkün değildir. Bunun HESAP tablosunda Tarih alanın olduğunu varsayarsak aşağıdaki gibi bir sorgu geçmişten gelen değerlere göre toplamları hesaplayacaktır. Bu örnek sorgu ŞUBAT-2009 seçildiği zaman yazılacak sorgudur.

Kod: Tümünü seç

select UYE.*, HESAPLANAN.* from UYE
left join
  (select KIM,
     coalesce(avg(case when AY='ŞUBAT' then AIDAT end),0) as AIDAT,
     sum(coalesce(AIDAT,0)-coalesce(AODEME,0)) as AIDAT_BORCU,
     coalesce(avg(case when AY='ŞUBAT' then YAKIT end),0) as YAKIT,
     sum(coalesce(YAKIT,0)-coalesce(YODEME,0)) as YAKIT_BORCU
   from HESAP where Tarih<'01.03.2009' group by KIM) as HESAPLANAN 
on UYE.ID=HESAP.KIM
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen pelitt »

selamlar vidyoyu izlediğinizi zannetmiyorum ordan bunu anladığınıza inanmak dahi istemiyorum kolay gelsin
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen conari »

ben izledim ama Speakerım yok. :roll:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen pelitt »

conari yazdı:ben izledim ama Speakerım yok. :roll:
Heralde senin sadece klavye çalışıyo abim aman ha fazla biiş yazıp onuda kaybetme lazım olacak :lol: geçen günde ben resimleri göremiyom demiştin :)
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen conari »

pelitt yazdı:
conari yazdı:ben izledim ama Speakerım yok. :roll:
Heralde senin sadece klavye çalışıyo abim aman ha fazla biiş yazıp onuda kaybetme lazım olacak :lol: geçen günde ben resimleri göremiyom demiştin :)
Bilgisayarda çalışmam için Speakera gerek yok ama Klavyesiz yapamam.Bu arada monitörde var yazdıklarını okuyabiliyorum. :wink:
Resimleri göremiyorum çünkü yüklediğin site, proxy sunucumuz tarafından yasaklanmış durumda :mrgreen: başka bir siteye veya buraya dosya olarak yükle açıp bakayım.

Flashı izledim ama sesini merak etmedim.tabloyu açmışsın birşeyler anlatıyorsun. Bide Quick raporu gösteriyorsun Ben sana ne nededim :?: Tablolardan almak istediğin görüntüyü bize yayınla ama yapmadın :!: gerekmi duymadın :?:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen emin_as »

Ben videoyu izledim, sesleri de dinledim.

Anlatım veya anlamakla ilgili bir sorun olduğu kesin, kim de ne sorun var bir kenarı bırakıp, arkadaşın derdini anladığım kadarıyla anlatayım.

Bir liste hazırlamak istiyor. Bu listede aylara göre üyelerin borçlarını dökecek, bir tane alanda da birikmiş borçlarını gösterecek.

Örnegin kasım ayı için 50 tl aidat ödemesi gerekiyor, toplam borcu da 200 tl. Bu 200 tl, haziran, aralık veya başka yıllardan da gelebilir, kasım öncesinin borcu olmasına gerek yok.

Aslında işini yapacak kod yukarıda verildi, ama hala ne cevabı aradığını anlamış değilim. Orada yazan where e de ihtiyacı yok. Sadece toplam borcu yazsın yeter diyor.

@Saban
sabanakman yazdı:Sorudan anladığım kısaca, seçilen ayın aidatı tutarı gelmeli ama geçmiş tüm dönem kayıtlarından aidat borçlarınının toplamını bulmak galiba :Noops . Bu işlem için bir tarih alanı şart. Ay adı alanı ile tarihsel olarak kıyaslama yapmak pek mümkün değildir. Bunun HESAP tablosunda Tarih alanın olduğunu varsayarsak aşağıdaki gibi bir sorgu geçmişten gelen değerlere göre toplamları hesaplayacaktır. Bu örnek sorgu ŞUBAT-2009 seçildiği zaman yazılacak sorgudur.

Kod: Tümünü seç

select UYE.*, HESAPLANAN.* from UYE
left join
  (select KIM,
     coalesce(avg(case when AY='ŞUBAT' then AIDAT end),0) as AIDAT,
     sum(coalesce(AIDAT,0)-coalesce(AODEME,0)) as AIDAT_BORCU,
     coalesce(avg(case when AY='ŞUBAT' then YAKIT end),0) as YAKIT,
     sum(coalesce(YAKIT,0)-coalesce(YODEME,0)) as YAKIT_BORCU
   from HESAP where Tarih<'01.03.2009' group by KIM) as HESAPLANAN 
on UYE.ID=HESAP.KIM
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Navicat te çalışıyor fakat zqueryde tablo bulunamadı ?

Mesaj gönderen pelitt »

Kod: Tümünü seç

select UYE.*, HESAP.* from UYE left join (select KIM, coalesce(avg(case when AY='''+COMBOBOX2.text+''' and yil='''+COMBOBOX1.text+''' then AIDAT end),0) as AIDAT, sum(coalesce(AIDAT,0)-coalesce(AODEME,0))'+' as AIDAT_BORCU, coalesce(avg(case when AY='''+COMBOBOX2.text+''' and yil='''+COMBOBOX1.text+''' then YAKIT end),0) as YAKIT, sum(coalesce(YAKIT,0)-coalesce(YODEME,0))'+' as YAKIT_BORCU from HESAP  group by KIM) as HESAP on UYE.ID=HESAP.KIM
burada Tarih<'01.03.2009' olayını kaldırdım
tam istediğim şekilde çalışıyor
kod tam aradığım kod arkadaşlar nekadar teşekkür edeceğimi bilemiyorum hepiniz sağolun varolun konuyu kapatırız artık reklama girecek ama :D ohhhh beee...
Cevapla