1

InnoセットアップからSQLに接続するためにADO接続を使用しています。変数にキャプチャするselectクエリを実行しています。selectクエリが空の行を返すと、「無効なバリアント型変換」エラーがスローされます。VarIsNullこのオプションを使用できるかどうか、またコードでどのように使用できるかわかりません。助けてください。以下はサンプルコードです。

ADOCommand := CreateOleObject('ADODB.Command');
 ADOCommand.ActiveConnection := ADOConnection;
 SQLQuery := 'SELECT Name FROM sys.databases where name=''' + DBValue + '''';
 ADOCommand.CommandText := SQLQuery;
 ADOCommand.CommandType := adCmdText;
 ADORecordset := ADOCommand.Execute;
 Name := ADORecordset.Fields(0);
4

1 に答える 1

1

Name変数に値を割り当てる前に、返されたレコードセットが空かどうかを確認できます。

空のレコードセットは、開いた直後にEOFプロパティに対してtrueを返します。コードでは、次のようになります。

  SQLQuery := 'SELECT Name FROM sys.databases where name=''' + DBValue + '''';
  ADOCommand.CommandText := SQLQuery;
  ADOCommand.CommandType := adCmdText;
  ADORecordset := ADOCommand.Execute;
  if ADORecordset.EOF then
  begin
    MsgBox('No records', mbInformation, mb_Ok);
    exit;
  end
  else begin
    Name := ADORecordset.Fields(0);
    MsgBox('Name ''' + Name + '''.', mbInformation, mb_Ok);
  end;
于 2012-11-08T05:28:32.047 に答える