• 締切済み

VBA ADOに関して

お世話になります。 VBAに関して質問があります。 ADOでDBから値を取得する際、 TEXT型の値が全く取れてきません。 どなたか取得方法をご教授下さい。 宜しくお願い致します。 DB:Sybase OS: RedHat 8.0 Dim rs As ADODB.Recordset Dim sql As String sql = "select * from " & tblName //dbはADODB.Connection Set rs = db.Execute(sql) Do While Not rs.EOF //ここでTEXT型だと、取れてきません。  If IsNull(rs.Fields('Field名').Value) Then End If rs.MoveNext Loop

みんなの回答

  • hacker_d
  • ベストアンサー率0% (0/7)
回答No.5

最初の変数宣言を、 「Dim rs As ADODB.Recordset」ではなく 「Dim rs As new ADODB.Recordset」としてみれば? あと、「Connection」や「Command」にも「new」をつけてみれば? まぁ「Command」は使っていたらの話ですけどね。 まぁ気休め程度ですけどねw

noname#79209
noname#79209
回答No.4

> //ここでTEXT型だと、取れてきません。 >If IsNull(rs.Fields('Field名').Value) Then 内容がNullでないのでは? If Nz(rs.Fields('Field名').Value,"") = "" then として、Nullのチェックでなく、文字列でチェックしてみたら如何でしょう。

rabaraba
質問者

補足

これまた、説明不足ですいません。 Accessではなく、EXCELです。 んー。Sybaseの制限でもあるのでしょうか。。

noname#22222
noname#22222
回答No.3

SQL Sever に ADODB でアクセスするサンプルです。 Public Function DBLookup(ByVal strField As String, _              ByVal strTable As String, _              Optional ByVal strWhere As String = "", _              Optional ByVal ReturnValue = Null) As Variant On Error GoTo Err_DBLookup    Dim DataValue    Dim strQuerySQL As String    Dim rst     As ADODB.Recordset    Set rst = New ADODB.Recordset    strQuerySQL = "SELECT " & strField & " FROM " & strTable    If Len(strWhere) > 0 Then      strQuerySQL = strQuerySQL & " WHERE " & strWhere    End If    With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then        .MoveFirst        DataValue = .Fields(0)      End If    End With Exit_DBLookup: On Error Resume Next    rst.Close    Set rst = Nothing    DBLookup = Nz(DataValue, ReturnValue)    Exit Function Err_DBLookup:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"    Resume Exit_DBLookup End Function <Execute のサンプル> Public Function CnnExecute(ByVal strSQL As String) As Boolean On Error GoTo Err_CnnExecute    Dim isOK As Boolean    Dim cnn As ADODB.Connection       isOK = True    Set cnn = CurrentProject.Connection    With cnn      .Errors.Clear      .BeginTrans      .Execute strSQL      .CommitTrans    End With Exit_CnnExecute: On Error Resume Next    cnn.Close    Set cnn = Nothing    CnnExecute = isOK    Exit Function Err_CnnExecute:    isOK = False    If cnn.Errors.Count > 0 Then      ErrMessage cnn.Errors(0), strSQL      cnn.RollbackTrans    Else      MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _         vbExclamation, " 関数エラーメッセージ"    End If    Resume Exit_CnnExecute End Function

rabaraba
質問者

お礼

説明不足ですいません。 接続は出来てますし、Text型以外(varcharなど)のデータは取得できています。 なぜかTEXTだけ、とれてこないのです。

noname#22222
noname#22222
回答No.2

If IsNull(rs.Fields('Field名').Value) Then End If そもそもデータ取得文がないし、未入力の時だけ何かしてそうだし・・・。 もう少し、コードを示すべきかと・・・。

回答No.1

If IsNull(rs.Fields.Item('Field名').Value) Then ではどうでしょう?

rabaraba
質問者

お礼

ありがとうございます。 取得できませんでした。。

関連するQ&A