1

次の問題があります。プロシージャでこのコードを実行し、SQL COMPACT DATABASE(sdf) から SQL を取得すると、「オブジェクトは既に開いています」というエラーが表示されます。どうすればこれを修正できますか。以下は、手順の私のコードです

Function GetSQL(sName: String; Var App: TApplication): String;
Var
  Q: TADOQuery;
Begin
  Q                  := TADOQuery.Create(App);
  Q.ConnectionString := GetConnectionStringFromRegistry;
  Q.Close;
  Q.SQL.Text                              := 'SELECT * FROM SQLs WHERE Name = :sname';
  Q.Parameters.ParamByName('sname').Value := sName;
  Try
    Q.Open;
    If Q.RecordCount >= 1 Then
      Begin
        Q.First;
        Result := Q['Query'];
        Q.Close;
      End;
  Finally
    Q.Free;
  End;
End;

[これがエラーのようです] これは、エラーがどのように見えるかです [Break を押したときのコードのようです] これは、Break を押すとコードがどのように見えるかです

4

2 に答える 2

1

これを思い出させてくれた@ user582118に感謝します...

これは、実際には SQL CE 用の OleDB プロバイダーのバグです。テーブルに 127 文字を超える nvarchar フィールドがあり、そのテーブルに対して選択クエリを実行すると、DB_E_OBJECTOPEN エラーが発生します。

元のスレッド: https://stackoverflow.com/a/14222561/800214

于 2013-05-24T17:29:23.700 に答える