ExcelでSQLを使う-025: ソース公開-09 SQLExecute関数-1(Excel To Excel)
生後13日前後から仔犬の目が明きました。
どうやら瞳の色はママ犬と同じ黒のようです。
◇◇◇◇◇
SQLExecute関数の紹介記事は、3つです。
1、SQLExecute関数で表を削除する。
2、SQLExecute関数で表を更新する。
3、SQLExecute関数で表に挿入する。
9、エクセルでSQL文を実行するSQLExecute関数
9-1、SQLExecute関数で表の行を削除する
ADO Connection の ExecuteメソッドとExcelの関係は、Excel固有の制約があって非常に微妙です。その制約の代表格が、Delete文の実行です。例えば、<成績表>から〔生徒_№〕が3の行を削除するSQL文を実行すると、次のようなエラーを得ます。
[イミディエイトウインドウ]
? DoExecute("DELETE FROM [成績表$D3:I100] WHERE 生徒_№=3")
False
そこで、削除対象の行データをNull値に変換して行詰めすることを試みても、DLookup関数を利用した参照を式に持つ行では実行時エラーが発生して変換できません。この問題を解決するには、削除対象の参照式をクリアする必要があります。現段階では、この仕組みは組み込んでいません。以上のような理由で、現段階では、参照式を持つ列が存在しない行だけがSQLExecute関数で削除することが可能です。
Sub Macro5()
Dim isOK As Boolean
Dim strSQL As String
strSQL = "DELETE FROM [顧客名簿$A1:G100] WHERE 郵便番号=1111236;"
isOK = SQLExecute(strSQL)
If isOK Then
Message "新宿区のお客様を<顧客名簿>から削除しました。"
End If
End Sub
SQLExecute関数のソースコードは、記事《3、SQLExecute関数で表に挿入する》で紹介します。ということで、本記事は、ここまでです。