0

私の英語で申し訳ありませんが、あなたが私を理解してくれることを願っています:P

フォームに配置せずに、コードで新しい TSQLQuery コンポーネントを作成しようとしています。私はそのコードを書きました:

var
sql:tsqlquery;
pole:TFMTBCDField;

....
   sql:=tsqlquery.Create(self);
   sql.SQLConnection:=ddm.konekszyn;
   sql.SQL.Text:='SELECT COUNT(idrap) FROM raporty WHERE idkier="'+lvkierowcy.Selected.Caption+'";';
   pole:=TFMTBCDField.Create(self);
   pole.Name:='sqlilerap';
   pole.FieldName:='COUNT(idrap)';
   pole.FieldKind:=fkData;
   pole.DisplayLabel:='COUNT(idrap)';

   sql.Fields.Add(pole);
   sql.Open;
   showmessage(sql.FieldByName('COUNT(idrap)').AsString);
   sql.Free;
   pole.Free;

しかし、データにアクセスしようとすると例外が発生します:

First chance exception at $75999617. Exception class EDatabaseError with message 'Field 'COUNT(idrap)' has no dataset'. Process htstrm2.exe (2308)

私は何をすべきか ?

4

5 に答える 5

1

フィールドを作らないでください。このようなクエリは、1つのフィールドのみを返します。したがって、fields配列から参照するだけです。

var
sql:tsqlquery;

....
   sql:=tsqlquery.Create(self);
   sql.SQLConnection:=ddm.konekszyn;
   sql.SQL.Text:='SELECT COUNT(idrap) FROM raporty WHERE idkier="'+lvkierowcy.Selected.Caption+'";';
   sql.Open;
   showmessage(sql.fields[0].AsString);
   sql.Free;
于 2009-11-09T13:09:00.497 に答える
0

データセットをフィールドに明示的に割り当てる必要があります。この行を追加してみてください

pole.DataSet:=sql;

さよなら。

于 2009-11-09T02:20:04.077 に答える
0

データベース ドライバーは、集計式の空のフィールド名を報告します。

フィールドのエイリアス:

   sql:=tsqlquery.Create(self);
   sql.SQLConnection:=ddm.konekszyn;
   sql.SQL.Text:='SELECT COUNT(idrap) AS cnt FROM raporty WHERE idkier="'+lvkierowcy.Selected.Caption+'";';
   pole:=TFMTBCDField.Create(self);
   pole.Name:='sqlilerap';
   pole.FieldName:='cnt';
   pole.FieldKind:=fkData;
   pole.DisplayLabel:='cnt';

   sql.Fields.Add(pole);
   sql.Open;
   showmessage(sql.FieldByName('cnt').AsString);
   sql.Free;
   pole.Free;
于 2009-11-08T18:35:44.097 に答える
0

返される列の別名。その後、そのエイリアス名でアクセスできます。

sql.SQL.Text:='SELECT COUNT(idrap) AS iDrapCount FROM raporty WHERE dkier 
="'+lvkierowcy.Selected.Caption+'";';
....
pole.FieldName := 'iDrapCount';
于 2009-11-09T14:08:01.663 に答える
-1

次の行をクエリに追加してみてください。

AND idrap <> nil
于 2009-11-08T19:13:47.117 に答える