2016-07-04 13 views
0

DelphiでInterbaseを初めて使用しています。誰かが私のコードをFirebirdデータベースからデータを照会するためにInterbaseを正しく使う方法を教えてもらえますか?あなたは、データソースまでのクエリをフックDBBandedTableViewを使用してクエリにDBBandedTableViewをリンクする必要がありdelphi7でInterbaseを使用する

procedure TfJM00001.af_search; 
var 
    i  : integer; 
    qryQuery : TIBdataset; 
    sql : string; 
begin 
    Try 
    qryQuery := TIBDataSet.Create(nil); 
    qryQuery.Database := IBDatabase1; 
    qryQuery.Transaction := qryQuery.Database.DefaultTransaction; 

    sql := ' select pro.pro_id, pro.pro_nm, cat.cat_nm, div.division_nm,  pro.price, pro.weight, pro.qty , typ.type_nm, pro.images ' + #13#10 + 
    ' from product pro ' +#13#10+ 
    ' left join division div on div.division_id = pro.division_id ' +#13#10+ 
    ' left join category cat on cat.cat_id = pro.cat_id ' +#13#10+ 
    ' left join tbl_type typ on typ.type_id = pro.type_id; ' ; 

try 

    qryQuery.Close; 
    qryQuery.SelectSQL.Text := sql; 
    qryQuery.Open; 

    if qryQuery.RecordCount < 0 then exit; 

    with cxGrid1BandedTableView1.DataController do 
    begin 
    RecordCount := 0; 
    BeginUpdate; 
     while not(qryQuery.Eof) do 
     begin 
     i := AppendRecord; 

     SetValue(i, col_Pro_Id.Index   ,qryQuery.FieldByName('PRO_ID').AsString); 
     SetValue(i, col_Pro_NM.Index   ,qryQuery.FieldByName('PRO_NM').AsString); 
     SetValue(i, col_Cat_NM.Index   ,qryQuery.FieldByName('CAT_NM').AsString); 
     SetValue(i, col_Type_NM.Index  ,qryQuery.FieldByName('TYPE_NM').AsString); 
     SetValue(i, col_Price.Index   ,qryQuery.FieldByName('PRICE').AsString); 
//  SetValue(i, Col_Description.Index ,qryQuery.FieldByName('PRO_NM').AsString); 
     SetValue(i, Col_Weight.Index   ,qryQuery.FieldByName('WEIGHT').AsString); 
     SetValue(i, col_Qty.Index   ,qryQuery.FieldByName('QTY').AsString); 
     SetValue(i, col_Division.Index  ,qryQuery.FieldByName('DIVISION_NM').AsString); 
//  SetValue(i, col_register_date.Index ,qryQuery.FieldByName('PRO_NM').AsString); 
     //SetValue(i, col_Compound.Index  ,qryQuery.FieldByName('Images').AsVariant); 
     qryQuery.Next; 
     end; 
    EndUpdate; 
    end; 
except on 
e : exception do 
begin 
    showmessage('Error Message : ' + e.Message); 
end; 
end; 
    Finally 
    qryQuery.Database.DefaultTransaction.Active := False; 
    end; 
end; 
+2

SOは約**具体的な質問です。何**正確**の問題がありますか? – MartynA

+3

Firebird!= Interbase。 InterbaseまたはFirebirdについてのあなたの質問は本当に同じものではなく、Firebirdデータベースを照会するためにInterbaseを使うことができないためです。 –

+0

私はデータベース(* .fdb)を持っていて、私のプログラムでは、(* .fdb)からデータをクエリするためにinterbaseコンポーネントを使用しました。またはこれを達成するために他に何かありますか? –

答えて

0

:私はこのような何かを試してみました。 cxGrid1BandedTableView1.DataControllerは、このようにデータが格納されることはありません。

関連する問題