sql bileşeninde
SELECT * FROM PUANTAJ
where BIRIMKOD=:birimkod and DONEM=:donem
SQL bileşeninde HAFTASONU alanını DIŞARDAM EKLEDİM
SQLBirimPersonelBulCalcFields içerinde
dm.SQLBirimPersonelBulHAFTASONU.Text:=20;
komut var
SELECT * FROM PUANTAJ
where BIRIMKOD=:birimkod and DONEM=:donem
order by HAFTASONU
komutu çalışınca
sql hatası 3çok az parametre 3. bekleniyor diyor
amacım HAFTASONU ALANINA GÖRE SIRALAMA
SQL HATASI
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
CalcField (hesaplanmış alan) ları SQL içinde düşünmeyin. Onlar sadece DataSet te bir alan olarak kullanılabilirler. Buradaki Select/Sorgu yapısında kullanamazsınız. Ayrıca sorguda iki adet parametreniz var onlara değer atıyor musunuz

Kod: Tümünü seç
dm.SQLBirimPersonelBul.ParamByName('birimkod').AsInteger := ... veya .Value := değer; her ne tür ise.
dm.SQLBirimPersonelBul.ParamByName('donem').AsInteger := ...
komut var...
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
sql hatası
SELECT * FROM PUANTAJ
where BIRIMKOD=:birimkod and DONEM=:donem
komutunda hatam yok
sadece order by HAFTASONU nu ekleyince hata veriyor
burdaki HAFTASONU CalcField (hesaplanmış alan) dır.
aslında SQL den aldığım sonucu dbgridde gösteriyorum. fakat 200 e yakın kayıt var en üsteki kaydın HAFTASONU değerini CalcField (hesaplanmış alan) ile hesaplatıp yazdırıyorum. DBGRİD alanı küçük olunca her HAFTASONU kayıt girişinde kayıtlar üste gelmektedir.
tekrar mouse ile alttadi kaydı seçip giriş yapmam lazım. Bende kendimce HAFTASONU alanına göre sıralrırsam dedim(boş alanlar yukarıda olacak şekilde) giriş yapan kişi eksik kayıt girmemiş olur dedim.
where BIRIMKOD=:birimkod and DONEM=:donem
komutunda hatam yok
sadece order by HAFTASONU nu ekleyince hata veriyor
burdaki HAFTASONU CalcField (hesaplanmış alan) dır.
aslında SQL den aldığım sonucu dbgridde gösteriyorum. fakat 200 e yakın kayıt var en üsteki kaydın HAFTASONU değerini CalcField (hesaplanmış alan) ile hesaplatıp yazdırıyorum. DBGRİD alanı küçük olunca her HAFTASONU kayıt girişinde kayıtlar üste gelmektedir.
tekrar mouse ile alttadi kaydı seçip giriş yapmam lazım. Bende kendimce HAFTASONU alanına göre sıralrırsam dedim(boş alanlar yukarıda olacak şekilde) giriş yapan kişi eksik kayıt girmemiş olur dedim.
merhaba,
Yanlış anlamış olabilirim. ilgili datasetin fields özelliğine gelerek new fields de calc alan oluşturduğunzda ve datasetin select sql sinde order by olarak bu alanı kullandığınızda işlem gerçekleşmiyor mu.
kolay gelsin
Yanlış anlamış olabilirim. ilgili datasetin fields özelliğine gelerek new fields de calc alan oluşturduğunzda ve datasetin select sql sinde order by olarak bu alanı kullandığınızda işlem gerçekleşmiyor mu.
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Hesaplanan alanı SQL'de yapsan ve öyle sıralasan. Delphi tarafında hesaplanan bir alanı SQL'de sıralayamazsın.
select a,b,c,d=a+b
from tablo
order by d
Burda d alanı a ve b'nin toplamı calculated bir alan. Firebird gibi bir veritabanı kullanıyorsan direk tabloya calculated alan ekleyebiliyorsun. Formül yazabiliyorsun.
Bir ikinci not "d=a+b" her veritabanında yemeyebilir. "a+b as d" şeklinde deneyebilirsin.
Kolay gelsin.
select a,b,c,d=a+b
from tablo
order by d
Burda d alanı a ve b'nin toplamı calculated bir alan. Firebird gibi bir veritabanı kullanıyorsan direk tabloya calculated alan ekleyebiliyorsun. Formül yazabiliyorsun.
Bir ikinci not "d=a+b" her veritabanında yemeyebilir. "a+b as d" şeklinde deneyebilirsin.
Kolay gelsin.
sql hatası
aşağıda CalcFields alanı oldukça karışık bunu sqlde hesaplatmam zor.
başka çözüm bulamadım
Not: Kodları [ code ] [ /code ] etiketleri arasına yazalım.
başka çözüm bulamadım
Kod: Tümünü seç
procedure TDM.SQLBirimPersonelBulCalcFields(DataSet: TDataSet);
var
a,b,hsfc,hifc,vc,yemek,e,bayramcalisma,seyyargorev:string;
sirano:integer;
begin
a := 'G'+copy(frmpuantaj.Edit3.text,1,2);
sirano:=dm.SQLBirimPersonelBulSIRANO.Value;
b:=copy(gunbul(sirano,a),1,2);
hifc:=copy(gunbul(sirano,a),3,2)+','+copy(gunbul(sirano,a),5,2);
hsfc:=copy(gunbul(sirano,a),7,2)+','+copy(gunbul(sirano,a),9,2);
vc:=copy(gunbul(sirano,a),11,2)+','+copy(gunbul(sirano,a),13,2);
yemek:=copy(gunbul(sirano,a),19,1);
seyyargorev:=copy(gunbul(sirano,a),20,1);
bayramcalisma:=copy(gunbul(sirano,a),15,2)+','+copy(gunbul(sirano,a),17,2);
dm.SQLBirimPersonelBulFAZLACALISMA.Text:=hifc;
dm.SQLBirimPersonelBulHAFTASONU.Text:=hsfc;
dm.SQLBirimPersonelBulVARDIYACALISMA.Text:=vc;
dm.SQLBirimPersonelBulYEMEK.Text:=yemek;
dm.SQLBirimPersonelBulBAYRAMCALISMA.Text:=bayramcalisma;
dm.SQLBirimPersonelBulSEYYARGOREV.Text:=seyyargorev;
dm.SQLBirimPersonelBulPUANTAJ.Text:=puantajkodbul1(copy(gunbul(sirano,a),1,2));
end;
Kardeşim ısrarla aynı şeyi söylüyoruz ya sanırım anlaşılamadı
Delphi tarafta oluşturulan herhangi bir değeri sorgunun bir parçası gibi kullanamazsın
Sadece parametre değerlerini geçirebilirsin. CalcField e göre sıralama yapman gerekiyorsa oluşan sorguyu kullanacağın bir geçici Mem_Table a HAFTASONU alanı indeks olarak tanımlanmış halde atayıp istediğin gibi sıralatmış olursun
Mem_Table lara genelde tek bir komutla da diğer bir DataSet (Query gibi) atama yapabilirsin; gibi 



Kod: Tümünü seç
Mem_Table.Open;
Mem_Table.LoadFromDataSet(Query, []);
//...

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!