Genelde funsiyon yada procedurlerde aşağıdaki gibi bir yöntele dinamik array işlemleri kullanıyorum
tek boyutlu dinamik array olduğunda parametre olarak "[1,2,3...]" ifadesi içerisinde değer gönderilebilirken
type Record olarak tanımlanan array lerede aynı şekilde göndermenin bir yolu varmıdır
Yaptığım 2 farklı örneği aşağıda ekledim
Yardımlarınız için teşekkürler
Genelde kullandığım yapım fonkisyon
Kod: Tümünü seç
function fndb_SQLQuery(pAdoQuery: TADOQuery; SQLText: String; const PValue: array of Variant; pDosyaAcmaSekli: TypeDosyaAcmaSekli = TypeOpen): Boolean;
...
...
...
function TfrmAnaForm.fndb_SQLQuery(pAdoQuery: TADOQuery; SQLText: String; const PValue: array of Variant; pDosyaAcmaSekli: TypeDosyaAcmaSekli): Boolean;
var
i: Integer;
begin
try
with pAdoQuery do
begin
Close;
SQL.Clear;
SQL.Text := SQLText;
for I := Low(PValue) to High(PValue) do
Parameters[i].Value := PValue[i];
if pDosyaAcmaSekli = TypeOpen Then
Open;
if pDosyaAcmaSekli = TypeExec Then
begin
ExecSQL;
Close;
end;
end;
Result := True;
except
on E: Exception do
begin
Result := False;
end;
end;
end;
Kod: Tümünü seç
frmAnaForm.fndb_SQLQuery(QryGenel, 'select * from Uyeler where Ad = :pAd and Soyad = :pSoyad', ['Ali', 'Veli'], TypeOpen);
Kod: Tümünü seç
type TGridFilterRec = Record
sColName:TcxGridDBColumn;
foKosul:TcxFilterOperatorKind;
vValue:Variant;
vDisplayValue:Variant;
fbokVarmi : Boolean;
fbokBoolOperatorKind : TcxFilterBoolOperatorKind;
end;
...
...
...
procedure pr_FiltercxGrid(_FilterIslemi:TypeFilter; _GridDBView:TcxGridDBTableView; const _FilterRec:array of TGridFilterRec);
...
...
...
procedure TEntityFunctions.pr_FiltercxGrid(_FilterIslemi:TypeFilter; _GridDBView:TcxGridDBTableView; const _FilterRec:array of TGridFilterRec);
var
AItemList: TcxFilterCriteriaItemList;
I : Integer;
begin
with _GridDBView.DataController.Filter do
begin
BeginUpdate;
try
Root.Clear;
if _FilterIslemi = FilterAktif then
begin
for I := 0 to High(_FilterRec) do
begin
if _FilterRec[I].fbokVarmi = True then
Root.BoolOperatorKind := _FilterRec[I].fbokBoolOperatorKind;
if _FilterRec[I].vDisplayValue <> '' then
Root.AddItem(_FilterRec[I].sColName, _FilterRec[I].foKosul, _FilterRec[I].vValue, _FilterRec[I].vDisplayValue)
else
Root.AddItem(_FilterRec[I].sColName, _FilterRec[I].foKosul, _FilterRec[I].vValue, VarToStr(_FilterRec[I].vValue));
end;
end;
finally
EndUpdate;
end;
Active := True;
end;
end;
Fonksiyonu çağırma şeklim
Kod: Tümünü seç
var
_FilterRec : array of TGridFilterRec;
begin
SetLength(_FilterRec, 1);
_FilterRec[0].sColName := ViewBekleyenSecim;
_FilterRec[0].foKosul := foEqual;
_FilterRec[0].vValue := True;
_FilterRec[0].vDisplayValue := 'True';
_FilterRec[0].fbokVarmi := False;
EntityFunctions.pr_FiltercxGrid(FilterAktif, ViewBekleyen, _FilterRec);
EntityFunctions.pr_FiltercxGrid(FilterAktif, ViewBekleyen, [(ViewBekleyenSecim,foEqual,True,'True',False),(...).....]);