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....
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ı?
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....
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....
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.
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....