タイトル通りなんですけど、
テーブルにあるフィールドを追加、削除したいのですが、
どうしたらいいのか全くお手上げ状態です。
助けてください。

ADOを使用しています。
お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。

maruru01です。
テーブルにあるフィールドの追加や削除は、ADOの拡張機能であるADOXを使用します。

まず、ADOと同じように参照設定でライブラリを追加します。
ライブラリ名は「Microsoft ADO Ext.2.5 for DDL and Security」です。(バージョンが2.5でないかも知れません。)
そうしたら、後はADOとだいたい同じで、オブジェクト変数を宣言して、新規オブジェクトへの参照を代入します。

Dim cat As ADOX.Catalog
Dim Tbl As ADOX.Table

Set cat = New ADOX.Catalog
cat.ActiveConnection = CurrentProject.Connection
Set Tbl = cat.Tables![テーブル名]

'フィールドの追加
Tbl.Columns.Append "追加フィールド名", adWChar
'フィールドの削除
Tbl.Columns.Delete "削除フィールド名"

Set Tbl = Nothing
Set cat = Nothing

Append、Deleteメソッドの引数など詳しいことは、MSDN Libraryなどで調べて下さい。
では。
    • good
    • 1
この回答へのお礼

やってみたところ、もののみごとに消えたり追加されたりしてくれました。
本当にありがとうございました!

お礼日時:2001/12/27 17:12

Dドライブ直下"db2000.mdb"ファイル、"ABC"テーブル、"AAA"テーブルを削除するサンプルです



'~~~~~~~~~~~~~~~~~~~~
Private Sub DelField_Click()
Dim stDbName As String
Dim stTblName As String
Dim stFidName As String
Dim stConnect As String
Dim ADOCN As ADODB.Connection
Dim ADOCAT As ADOX.Catalog

stDbName = "D:\db2000.mdb"
stTblName = "ABC"
stFidName = "AAA"
stConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & stDbName & ";"

Set ADOCN = New ADODB.Connection
ADOCN.Open stConnect

Set ADOCAT = New ADOX.Catalog
ADOCAT.ActiveConnection = ADOCN

ADOCAT.Tables(stTblName).Columns.Delete (stFidName)

End Sub
'~~~~~~~~~~~~~~~~~~~~
※参照設定にて「Microsoft ADO Ext 2.5 DLL and Security」をチェックしてください

御期待にそえれば...

参考URL:http://homepage2.nifty.com/inform/vbdb/index.html
    • good
    • 0

それは、テーブルの定義 (フィールドの数や型) を変更したいという事でしょうか?

この回答への補足

フィールドの数をへらしたかったんです。
返事おそくなりまして、すみません。

補足日時:2001/12/27 17:11
    • good
    • 0

http://www.zdnet.co.jp/help/howto/win/win2000/00 …

上記にアクセスして勉強してください。

この回答への補足

レコードセットの削除、追加はできるんです。
上記のURLに行ってみましたが、該当するものが存在しませんでした・・・。
せっかく教えてくれたのにすみません。

補足日時:2001/12/27 16:20
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテーブル入れ子にしたらNNではダメ?

赤い背景画像を使ったHTMLにテーブルを3個入れ子で載せました。
下のテーブルのセルに白色、中のテーブルのセル色にグレー、一番上のテーブルのセルに白色を指定しました。

そこへラジオボタンをつけたのですが、本来、枠がない丸いボタンのところに赤の枠ができてしまいます。
IEでは問題ないのですが、NN4.7で確認したらこうなっていました。

デザインを変えずに回避する方法があったら教えてください。
また、NN6.*~だったらOKということはありますか?

Aベストアンサー

こんにちは!

<input type="radio" name="address" value="menber" checked style="background-color:#FFFFFF;">

と style="background-color:#FFFFFF;" を追加してください。

NN6は分かりませんが4.7と7で確認しました。

Mac 側は確認していません・・。

QVBA ACCESS 更新 追加 find ADO テーブル

いつもお世話になっております。
ACCESSのフォームに作成したコマンドボタンを実行すると
元テーブルから対象テーブルへIDを元に値を更新するようなプログラムを
作りたいと思います。
また、注意点として元テーブルでは「ID」、対象テーブルでは「管理番号」の異なる名称によりデータの管理を行っております。
アドバイスお願いします。
VBAの中でADO関数やFind関数を使ったら出来ると考えております。

Aベストアンサー

関係ないかもしれませんが、前の質問は解決していますか? 自分がした質問をちゃんとファローしておかないと、まともに回答してくれる人が減りますよ。 
http://oshiete1.goo.ne.jp/qa4804510.html

さて、ご質問の件ですが、これは追加クエリで行うことができます。 
クエリというのはSQL処理ですのでADOから、発行することもできます。

クエリを使わないでやる場合は、
1.元テーブルを開きレコードを一件ずつ参照し、
2.そのIDのレコードが、対象テーブルにあるかどうか調べ、
3.ない場合は新規レコードを作成する。
ということになります。

前回のコードを改造すると(未検証ですが)、
Dim CN As New ADODB.Connection
Dim rsA As New ADODB.Recordset
Dim rsB As New ADODB.Recordset
Set CN = CurrentProject.Connection
rsA.Open "元テーブル", CN, adOpenKeyset, adLockOptimistic
rsB.Open "対象テーブル", CN, adOpenKeyset, adLockOptimistic
Do Until rsA.EOF
rsB.Filter = " 管理番号 = '" & rsA!ID & "'"
if rsB.EOF then
rsB.addnew
rsB!管理番号 = rsA!ID
rsB!名前 = rsA!名前
rsB!価格 = rsA!価格
rsB.Update
End if
rsA.MoveNext
Loop
rsB.Close: Set rsB = Nothing
rsA.Close: Set rsA = Nothing
CN.Close: Set CN = Nothing
のような感じになると思います。

これが、クエリ(SQL)で処理すると、
Dim CN As New ADODB.Connection
Set CN = CurrentProject.Connection
CN.EXECUTE "INSERT INTO 対象テーブル(管理番号,名前,価格) SELECT 元テーブル.ID, 元テーブル.名前, 元テーブル.価格 FROM 元テーブル LEFT JOIN 対象テーブル ON 元テーブル.ID = 対象テーブル.管理番号 WHERE 対象テーブル.管理番号 Is Null"
CN.CLOSE: SET CN = NOTHING
になります。(これまた、未検証です。)
レコード数が多くなってくるとパフォーマンスに大きな差が出てきます。(クエリのほうが有利です。)

関係ないかもしれませんが、前の質問は解決していますか? 自分がした質問をちゃんとファローしておかないと、まともに回答してくれる人が減りますよ。 
http://oshiete1.goo.ne.jp/qa4804510.html

さて、ご質問の件ですが、これは追加クエリで行うことができます。 
クエリというのはSQL処理ですのでADOから、発行することもできます。

クエリを使わないでやる場合は、
1.元テーブルを開きレコードを一件ずつ参照し、
2.そのIDのレコードが、対象テーブルにあるかどうか調べ、
3.ない場合...続きを読む

QNN4.7 テーブルの背景を表示出来ますか?

至急教えて欲しいのですが、ネットスケープ4.7でhtmlを確認中ですが。
テーブルへ背景を埋め込むと表示されないようです。
この現象は、NN4.7では無理なのでしょうか?
どなたか助けてくださいm(_ _)m

Aベストアンサー

NN4.7では <table bgcolor="~"> や <table background="~"> は正式にサポートされています。
(Win. Mac. 共にNN4から正式サポート)

但し、NNの仕様でテーブルの各セル内が背景以外何もない場合は背景が表示されません。

おそらく、背景が表示されていない部分は、文字も画像も入れていないのではありませんか?

そのときには、各空白のセルに相当するソース部位に「&nbsp;」(&は実際には半角です)を記述しておきます。
「&nbsp;」(&は実際には半角です)は、空白を表す特殊な記号で、ブラウザには表示されません。

Qアクセス2000のデータベースにテーブルを追加して、フィールドを作成したい 

アクセス2000のデータベースがあります。
このファイル「c:\ynet\Hz2data1.mdb」に新しいテーブル「会費管理2」を追加して、フィールドを作成したいのです。
現在は「会費管理2」テーブルがあるのを前提に下記のように書き込みしてみましたが・・・
新しく「会費管理2」テーブルを指定したファイル「c:\ynet\Hz2data1.mdb」に作成してフィールドも作成するのを同時にできるのかしら?
どなたか助けていただければ幸いです。
                                          かしこ



Private Sub コマンド1_Click()
Beep
If (MsgBox("データをアップデートしますが宜しいですか? 作業は一瞬で終わりますよ!!") = 7) Then
End If
Dim cnn As ADODB.Connection
Dim catDB As ADOX.Catalog
Dim tbl As ADOX.Table
Dim colAdo As ADOX.Column
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;"
strCon = strCon & "Data Source=c:\ynet\Hz2data1.mdb"
Set cnn = CurrentProject.Connection
Set catDB = New ADOX.Catalog
catDB.ActiveConnection = cnn
Set tbl = New ADOX.Table
tbl.Name = "会費管理2"


'以下追加したいフィールド
Set colAdo = New ADOX.Column
With colAdo
.Name = "個別台帳ID"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "会費名称ID"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "会費区分ID"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "年度"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "入金日"
.Type = adDate
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "入金額"
.Type = adCurrency
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = Nothing
Set tbl = Nothing
Set catDB = Nothing
cnn.Close
End Sub

アクセス2000のデータベースがあります。
このファイル「c:\ynet\Hz2data1.mdb」に新しいテーブル「会費管理2」を追加して、フィールドを作成したいのです。
現在は「会費管理2」テーブルがあるのを前提に下記のように書き込みしてみましたが・・・
新しく「会費管理2」テーブルを指定したファイル「c:\ynet\Hz2data1.mdb」に作成してフィールドも作成するのを同時にできるのかしら?
どなたか助けていただければ幸いです。
                                       ...続きを読む

Aベストアンサー

動作確認してみましたので、その内容が参考になればと。
不要であれば、スルーしてください。


事前準備)
・新規 mdb を C:\ynet\test_ynet.mdb として作っておきます。(中身何もなし)
・VBAを記述実行する mdb を新規作成します。
 VBEの画面で標準モジュールを挿入し、以下を記述します。
 FILENAME には、テーブルを作成する mdb のパスを、
 TABLENAME には、作成するテーブル名を記述しておきます。

 ADOBD / ADOX が使えるように、参照設定で設定しておきます。

 実行するのは Sample1 で作成しておいて、Sample2 で追加していくものになります。
(Sample1/2 の違いは★部分だけなので、実際の実行順は関係ないのですけど)

対象の mdb にテーブルが存在しなかったら作成し、あったら追加。
フィールドを重複して追加しようとした時のエラーは、無視して処理を続けるものになります。

Sample1の実行は、Sample1内をクリック後、「F5」キーで、
同様に Sample2 の実行は、Sample2内をクリック後、「F5」キーで行います。

確認は、Sample1実行後、対象ファイルを開いて確認します。
同様に、Sample2実行後、対象ファイルを開いて確認します。

------ 標準モジュールに記述する内容は以下

Const FILENAME = "C:\ynet\test_ynet.mdb"
Const TABLENAME = "会費管理2"

Private Sub SetCol(tbl As ADOX.Table, sName As String, iType As Long)
  Dim colAdo As ADOX.Column

  On Error Resume Next
  Set colAdo = New ADOX.Column
  With colAdo
    .Name = sName
    .Type = iType
    .Attributes = adColNullable
  End With
  tbl.Columns.Append colAdo
  Set colAdo = Nothing
End Sub

Private Sub Sample1()
  Dim cnn As ADODB.Connection
  Dim catDB As ADOX.Catalog
  Dim tbl As ADOX.Table
  Dim sProvider As String
  Dim bNew As Boolean

  sProvider = CurrentProject.Connection.Provider
  Set cnn = New ADODB.Connection
  cnn.Open "Provider=" & sProvider & "; DATA Source='" & FILENAME & "'"
  Set catDB = New ADOX.Catalog
  catDB.ActiveConnection = cnn

  On Error Resume Next
  bNew = False
  Set tbl = catDB.Tables(TABLENAME)
  If (tbl Is Nothing) Then
    Set tbl = New ADOX.Table
    tbl.Name = TABLENAME
    bNew = True
  End If

  Call SetCol(tbl, "数値1", adInteger)
  Call SetCol(tbl, "数値2", adInteger)
  Call SetCol(tbl, "数値3", adInteger)
  Call SetCol(tbl, "日付", adDate)
  Call SetCol(tbl, "金額", adCurrency)

  If (bNew = True) Then
    catDB.Tables.Append tbl
  End If

  catDB.Tables.Refresh

  Set tbl = Nothing
  Set catDB = Nothing
  Set cnn = Nothing
End Sub

Private Sub Sample2()
  Dim cnn As ADODB.Connection
  Dim catDB As ADOX.Catalog
  Dim tbl As ADOX.Table
  Dim sProvider As String
  Dim bNew As Boolean

  sProvider = CurrentProject.Connection.Provider
  Set cnn = New ADODB.Connection
  cnn.Open "Provider=" & sProvider & "; DATA Source='" & FILENAME & "'"
  Set catDB = New ADOX.Catalog
  catDB.ActiveConnection = cnn

  On Error Resume Next
  bNew = False
  Set tbl = catDB.Tables(TABLENAME)
  If (tbl Is Nothing) Then
    Set tbl = New ADOX.Table
    tbl.Name = TABLENAME
    bNew = True
  End If

  Call SetCol(tbl, "数値1", adInteger)
  Call SetCol(tbl, "数値2", adInteger)
  Call SetCol(tbl, "数値3", adInteger)
  Call SetCol(tbl, "日付", adDate)
  Call SetCol(tbl, "金額", adCurrency)

  Call SetCol(tbl, "個別台帳ID", adInteger) ' ★
  Call SetCol(tbl, "会費名称ID", adInteger) ' ★
  Call SetCol(tbl, "会費区分ID", adInteger) ' ★
  Call SetCol(tbl, "年度", adInteger) ' ★
  Call SetCol(tbl, "入金日", adDate) ' ★
  Call SetCol(tbl, "入金額", adCurrency) ' ★

  If (bNew = True) Then
    catDB.Tables.Append tbl
  End If

  catDB.Tables.Refresh

  Set tbl = Nothing
  Set catDB = Nothing
  Set cnn = Nothing
End Sub



Access に記述するVBAということで、Provider に指定する文字列は、
CurrentProject.Connection.Provider
から拾ってきています。

2007で実行したとして、対象ファイルを xxxx.accdb に変更した時でも動作します。
Provider=Microsoft.Jet.OLEDB.4.0;
に固定すると、2007で実行したとしても mdb に限定されます。
(余計なことになりますが)


データが空の時に確認した内容になるので、それ以外は確認してください。

動作確認してみましたので、その内容が参考になればと。
不要であれば、スルーしてください。


事前準備)
・新規 mdb を C:\ynet\test_ynet.mdb として作っておきます。(中身何もなし)
・VBAを記述実行する mdb を新規作成します。
 VBEの画面で標準モジュールを挿入し、以下を記述します。
 FILENAME には、テーブルを作成する mdb のパスを、
 TABLENAME には、作成するテーブル名を記述しておきます。

 ADOBD / ADOX が使えるように、参照設定で設定しておきます。

 実行するのは Samp...続きを読む

QIE6/NN7.1のテーブルのheight="100%"

テーブルの高さの指定 height="100%" なんですが、
IE6とNN7.1で100%で表示されません。

下記の記述に間違いはありますでしょうか?
もしかしたら初歩的な問題なんでしょうか?


ちなみにIE5.5 MacのIE5.2では表示されました。
困っています。
宜しくお願いいたします。

ーーーーーーーーーーーーーー
<table border="0" cellspacing="0" cellpadding="0" height="100%">
<tr>
<td valign="top">上</td>
</tr>
<tr>
<td valign="bottom">下</td>
</tr>
</table>
ーーーーーーーーーーーーー

Aベストアンサー

HTML4.01の規格(仕様)では、tableに使えるアトリビュートは、summary、align、widthです。
heightが有効になるほうが特殊だと思ったほうがよいとおもいます

QADOでNullフィールドの抽出

VB6.0+ADO2.7で、mdbファイルを扱っています。
.filterプロパティを使ってabcフィールドの値がnullまたは空のテーブルを抽出したく
recordset.filter="abc= null or abc=''"
としました。この場合は問題ないのですが、更にdefフィールドの条件を追加し
recordset.filter="(abc= null or abc='') AND def= 'xyz'"
としたところ
「実行時エラー3001
引数が間違った型、許容範囲外、または競合しています。」
というエラーが発生してしまいます。
また、
recordset.filter="abc= null AND def= 'xyz'"
或いは
recordset.filter="abc='' AND def= 'xyz'"
では問題ありません。
何が悪いのでしょうか?
よろしくお願いします。

Aベストアンサー

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdprofilter.asp

>次のように、OR で句を結合してできた句のグループを、AND を使ってさらに別の句と結合することはできません。
>(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

こちらの情報によると、ダメみたいですね。
Filter プロパティは制約が多いみたいで、where句のように自由に条件は書けないみたいですね。

> Null を使うことはできません。
さらに、こういう記述もあります。

SQL文のwhere句を利用した方が良いかも知れませんね。

QNNでテーブルの枠線(BORDER)の設定は?

NN6です。
BORDERを使用したいのですが、NNではうまくいきません。
<TABLE>タグにあてはめるとだめだときいたので、TDにあてはめようとしているのですが…。

HEAD内で
TDにBORDER-STYLE="SOLID; BORDER-COLOR:GRAY;"
としました。これをTD CLASS=***
としているのですが、一向に線は出てきません。
どのように直せばいいのでしょうか?

Aベストアンサー

とりあえずダブルクォーテーションは不要なので削除しましょう。

BORDER-STYLE=SOLID; BORDER-COLOR:GRAY;

それでも出なかったらボーダーの太さも明記しておきましょう。

BORDER-STYLE=SOLID; BORDER-COLOR:GRAY;BORDER-WIDTH:1pt;

QADO.NETのSqlDataReaderをADOのRecordSetのように使いたい

いつもお世話になっております。

SqlDataReaderについての質問なのですが、ADOでのレコードセットであった、EOFプロパティ(それに該当するものも)が見当たらず困っています。

レコードを最後まで書き出すことは、while(DataReader.read = True)でもできますが、ループの中に判定を入れて、条件次第ではレコードを進めないということができません。

ADO.NETのときはDO UNTIL RecordSet.Eof = True と、RecordSet.nextを組みせて柔軟に書き出しができていた分、ちょっと不便に感じています。

EOFと同様のプロパティというのもあるのでしょうか?

Aベストアンサー

お世話になります。

RecordSet.Eof = True
DataReader.Read = False
と同じです。

> ループの中に判定を入れて、条件次第ではレコードを進めないということができません。

以下の例では、SQL Server 2000 の Northwind データベースの
Cusomers テーブルから値を取得し、
標準出力に 1 列目の値を出力します。
ただし、
1 列目の値が "ANTON" の場合、読み込み及び出力の処理を中断しています。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim con As SqlClient.SqlConnection = New SqlClient.SqlConnection(My.Settings.NorthwindConnectionString)
  Try
    con.Open()
    Dim sc As SqlClient.SqlCommand = New SqlClient.SqlCommand("SELECT * FROM Customers", con)
    Try
      Dim reader As SqlClient.SqlDataReader = sc.ExecuteReader()
      Try
        While (reader.Read())
          Dim str As String = reader.GetString(0)
          Console.WriteLine(str)
          If str = "ANTON" Then
            reader.Close()
            Exit While
          End If
        End While
      Finally
        If Not reader Is Nothing Then reader.Close()
      End Try
    Finally
      If Not sc Is Nothing Then sc.Dispose()
    End Try
  Finally
    If Not con Is Nothing Then con.Close() : con.Dispose()
  End Try
End Sub

お世話になります。

RecordSet.Eof = True
DataReader.Read = False
と同じです。

> ループの中に判定を入れて、条件次第ではレコードを進めないということができません。

以下の例では、SQL Server 2000 の Northwind データベースの
Cusomers テーブルから値を取得し、
標準出力に 1 列目の値を出力します。
ただし、
1 列目の値が "ANTON" の場合、読み込み及び出力の処理を中断しています。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handle...続きを読む

QIE(5.5)とNN(4.7)のフォントサイズについて。

フォントサイズがデフォルトのままだと、IE(5.5)とNN(4.7)とではフォントサイズが違うのです。
IEの方でフォントサイズを「小」にするとNNと丁度良いサイズになるので、
IEでアクセスしたときには強制的にフォントサイズを「小」に変更することなど出来ませんでしょうか?
CSSで「12px」とかにしたんですけど、やはりIEでサイズが「中」になっていると
微妙にサイズが違ってしまうのです。
また、テーブル内のフォントのサイズも同じように変更したいのでNNに対しては融通が利かないのです。
なにとぞお知恵をお貸しくださいませm(_ _)m

Aベストアンサー

これはJavaScriptとの併用である程度解決つきます。
ブラウザによって使用するCSSファイル(この場合は外部ファイルにします。拡張子『.css』)を用意し、<head>~</head>タグ内にブラウザの判別のスクリプトを書く形です。

IE用とNN用で別々のCSSを用意する事によって、かなり近い状態で表示されるはずです(それでもWindows/Mac、他のバージョンを考えると完全に一致させる事は至難の技ですが・・・)。

JavaScriptでのブラウザ判別については、ここの『JavaScirpt』の方で見つかったので、そのリンクを。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=186603

QEXCEL_VBAでOracleにADO接続してSQL文で追加/更新したい

EXCELで入力した値をADO接続して
SQL文で登録したいのですが 誰かサンプルソース
作成していただけないでしょうか?

Aベストアンサー

手抜きのような気もしますが…
Oracle OLACLEDBデータベースのSCOTTスキーマに「テスト」テーブルがある物とします。
NAME VARCHAR2
KOE VARCHAR2

Excelでは、ツール-参照設定で"Microsoft ActiveX Data Objects 2.0 Library"を参照します。

Module1を作成して、
↓ここから
Option Explicit

' ADOのオブジェクト変数を宣言
Private cnn As New ADODB.Connection
Private cmd As New ADODB.Command

Private Sub sTest()
On Error GoTo err_hdr
' Oracleの接続
cnn.Open "Provider=MSDAORA;" & _
"Data Source=ORACLEDB;", "SCOTT", "TIGER"
Set cmd.ActiveConnection = cnn
'追加の例
With cmd
.CommandText = "INSERT INTO テスト" _
& " (NAME , KOE)" _
& " VALUES ( '" & "ねこ" & "'" _
& " , '" & "にゃん" & "')"
.CommandType = adCmdUnknown
.Execute
End With
'更新の例
With cmd
.CommandText = "UPDATE テスト" _
& " SET テスト.NAME='" & "ねこ" & "'" _
& " , テスト.KOE='" & "にゃお~ん" & "'" _
& " WHERE " _
& " テスト.NAME='" & "ねこ" & "'" _
& " AND テスト.KOE='" & "にゃん" & "'"
.CommandType = adCmdUnknown
.Execute
End With
'削除の例
With cmd
.CommandText = "DELETE FROM テスト" _
& " WHERE " _
& " テスト.NAME='" & "ねこ" & "'" _
& " AND テスト.KOE='" & "にゃお~ん" & "'"
.CommandType = adCmdUnknown
.Execute
End With

cnn.Close

Set cmd = Nothing
Set cnn = Nothing
Exit Sub
err_hdr:
Resume Next
End Sub
↑ここまで

「ねこ」とかの代わりにExcelシート上のセルからデータを取得して
セットするように改造下さればなんとかなるかと思います。

手抜きのような気もしますが…
Oracle OLACLEDBデータベースのSCOTTスキーマに「テスト」テーブルがある物とします。
NAME VARCHAR2
KOE VARCHAR2

Excelでは、ツール-参照設定で"Microsoft ActiveX Data Objects 2.0 Library"を参照します。

Module1を作成して、
↓ここから
Option Explicit

' ADOのオブジェクト変数を宣言
Private cnn As New ADODB.Connection
Private cmd As New ADODB.Command

Private Sub sTest()
On Error GoTo err_hdr
' Oracleの接続
cnn.Open "Provider=M...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報