Dizi olarak sorgu oluşturmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Dizi olarak sorgu oluşturmak

Mesaj gönderen hbulus »

Kod: Tümünü seç

var
kasa: ARRAY OF TADOQuery;
i:integer;
begin
for i:=0 to 5
do begin
kasa[i]:=TADOQuery.Create(nil);
kasa[i].ConnectionString:=ADOConnection1.ConnectionString;

kasa[i].SQL.Add('select * from kasa'); 
kasa[i].sql.Add('where kasa_kod=:k');
kasa[i].Parameters[0].Value:='10';
kasa[i].Open;
.
.
.
Şeklinde sorgu oluşturabiliyor muyuz? Panel, edit vb. oluşturulabilirken, sorgu oluşturamadım. Acaba nerede hata yapıyorum?
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen aslangeri »

s.a.
oluşturabilirsiniz.
ancak parametreyi de eklemeniz lazım.

Kod: Tümünü seç

.....
kasa[i].sql.Add('where kasa_kod=:k');
kasa[i].parameters.clear;
kasa[i].paramaters.add....
kasa[i].parameters[0].datatype:=ft....
kasa[i].Parameters[0].Value:='10';
.....
gibi işlemler yapman lazım
forumda birkaç örnek vardı sanırım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen hbulus »

s.a.

Kod: Tümünü seç

kasa[i]:=TADOQuery.Create(nil);
satırına geldiğinde "acces violation" veriyor. Showmessage ile denedim. Kod aşağı satıra geçemiyor.
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen unicorn64 »

Kod: Tümünü seç

kasa: ARRAY OF TADOQuery;
kasa değişkeni dinamik dizi olarak tanımlandığından setlength ile boyutunu ayarlamalısınız...

Kod: Tümünü seç

Setlength(kasa,6);
....
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen aslangeri »

s.a.
önce kasanın uzunluğunu belirtmen gerekiyor.
setlength ile kasa dizininin uzunluğunu belirle ondan sonra elemanlara ulaşmayı dene.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen hbulus »

s.a.
setlength ile boyutu zaten ayarlamıştım. Ama datasource'ü dizi olarak tanımlamama rağmen
bir türlü dataset ataması yapamadım dolayısı ile dizi olarak oluşturduğum dbgridlere bağlayamadım.
Sorguyu çalıştırdıktan sonra döngü ile stringgride yazdırabildim. Bu datasource kullanımı için
bir çözüm bulamazmıyız?
Aşağıdaki şekil yerine nasıl bir kurgu olmalı?

Kod: Tümünü seç

var
dtsqkasa:array of TDataSource;
pan:array of Tdbgrid;
begin
setlength(pan,12);
SetLength(kasa, 12);
SetLength(dtsqkasa,12);
.
.
dtsqkasa[i].DataSet:=TADODataSet(kasa[i]);
pan[i].DataSource:=dtsqkasa[i];
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen unicorn64 »

ya eksik kod yazıyorsun yada yazdığın kodları buraya tam aktarmıyorsun.. son yazdığın mesajda da kasa değişkeni görünmüyor tanımlarda...

asıl yapmak istediğini söylersen daha net cevaplar alabilirsin...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen hbulus »

Daha net anlaşıması için, kodların son hali aşağıdaki gibi;

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
var
pan:array of Tdbgrid;
i:integer;
sol,ust:integer;
kasasay:integer;
kasa:array of TADOQuery;
dtsqkasa:array of TDataSource;
x:integer;
begin
setlength(pan,12);
SetLength(kasa, 12);
SetLength(dtsqkasa,12);
i:=0;
qkasalar.First;
while not QKASALAR.Eof
do begin
kasa[i]:=TADOQuery.Create(self);
kasa[i].Connection:=ADOConnection1;
pan[i]:=Tdbgrid.Create(self);
pan[i].Parent:=self;
ust:=panel10.Top;
pan[i].Top:=ust;
pan[i].Left:=pan[i].Left+105*i;
pan[i].Width:=100;
pan[i].Height:=100;
kasa[i].Close;
kasa[i].SQL.Clear;
kasa[i].SQL.Add('select * from tblkasa');
kasa[i].sql.Add('where tarih=:t and IO=''G''');
kasa[i].Parameters[0].Value:=MonthCalendar1.Date;
kasa[i].Open;      ShowMessage('aa');
kasa[i].Open;
kasa[i].First;
x:=1;
while not kasa[i].Eof
do begin
sg1.Cells[0,x]:=(kasa[i].fieldbyname('kasa_kod').AsString);
sg1.Cells[1,x]:=(kasa[i].fieldbyname('aciklama').AsString);
sg1.Cells[2,x]:=CurrToStrF(kasa[i].fieldbyname('tutar').Value,ffNumber,2);
sg1.Cells[3,x]:=(kasa[i].fieldbyname('tarih').AsString);
x:=x+1;
kasa[i].Next;
 end;
i:=i+1;
qkasalar.Next;
end;
bu haliyle kod çalışıyor. Yaptığı iş ise ilgili günde sadece hareket gören kasaların dökümlerini ayrı ayrı
almak. bir önceki sorumdaki konuda burada kullandığım stringgrid yerine dbgrid kullanabilmek içindi.
Burada tanımladığımız her kasa dizisi için datasource tanımlayıp, dbgrid'e bağlamak istiyorum. Biraz karışık mı oldu ne?
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen orhancc »

Bu yazdığın kod yapmak istediğin şeyi yaptığına emin misin ? QKASALAR'da kaç tane değer varsa o kadar kez aynı sorguyu çalıştırıyorsun. Hep aynı selecti çekiyorsun amacın nedir anlamadım.
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Re: Dizi olarak sorgu oluşturmak

Mesaj gönderen hbulus »

s.a.
Bu kodun yaptığı işle isteğim şey aynı, yukarıda belirttiğim gibi sonucuda istediğim neticeyi veriyor zaten.
Qkasalar ile döngüye girdiğinde qkasaların her bir değeri bir kasa kodunu alıyor (kasalar TL, €, &, Pos vb.), array olarak oluşturduğumuz kasa sorgusu ile o kasanın hareketini döndürüyor. Benim son durumda anlatmaya çalıştığım, becermediğim
bu kasa sorgu sonucunun stringridde gösterebilmem, yani dbgridde gösteremiyorum.
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Cevapla