■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
|
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った): |
■ ページの共有: |
[ サイト内検索 ]
![]()
カスタム検索
|
#353-0Oracle SQLでかなり困ってますVB-MAN2001-07-16(月) 13:51
#354-0RE#353:Oracle SQLでかなり困ってますだい2001-07-16(月) 14:32
#355-0RE#353:Oracle SQLでかなり困ってます匿名3552001-07-16(月) 14:38
#357-0RE#354:Oracle SQLでかなり困ってますVB-MAN2001-07-17(火) 09:00
#358-0RE#357:Oracle SQLでかなり困ってますよねKEN2001-07-17(火) 09:33
#354-0RE#353:Oracle SQLでかなり困ってますだい2001-07-16(月) 14:32
#355-0RE#353:Oracle SQLでかなり困ってます匿名3552001-07-16(月) 14:38
#357-0RE#354:Oracle SQLでかなり困ってますVB-MAN2001-07-17(火) 09:00
#358-0RE#357:Oracle SQLでかなり困ってますよねKEN2001-07-17(火) 09:33
VB-MAN2001-07-16(月) 13:51
どうも始めまして、今データベースの更新でかなり苦しんでます。 内容は、3つの表を連結し、条件に該当した複数のデータを"0000"で更新するという部分のSQLなのですがどうしてもうまくいきません。(T_T) UPDATE文は複数の表ではつかえないし・・・・。 今の現状のソースです。 ******************************************************************************************Public Function gfncFilenew() As geRtn Dim strSql As String Dim objDs As Object On Error GoTo ErrProc gfncFilenew = geRtn.NG Set objDs = Nothing strSql = "CREATE VIEW TYUSYUTU (INM_JIMU_CD," strSql = strSql & "INM_CHOTEI_NENDO," strSql = strSql & "INM_CHOTEI_YMD," strSql = strSql & "INM_KYOKA_YMD_TOSHO," strSql = strSql & "IBM_SHIYORYO_CD)" strSql = strSql & " AS SELECT INM_CHOTEI_NENDO," strSql = strSql & "INM_CHOTEI_YMD," strSql = strSql & "INM_JIMU_CD" strSql = strSql & " FROM GI_NAIYOM,GI_BUKENM,GI_LINKM" strSql = strSql & " WHERE GI_NAIYOM.INM_JIMU_CD = GI_BUKENM.IBM_JIMU_CD" strSql = strSql & " AND GI_NAIYOM.INM_JIMU_CD = GI_LINKM.ILM_JIMU_CD" Set objDs = gobjDb.CreateDynaset(strSql, 0&) 'データ存在ェック If objDs.EOF Then gfncFilenew = geRtn.OK Exit Function End If strSql = "UPDATE TYUSYUTU" strSql = strSql & " SET INM_CHOTEI_NENDO = '0000',INM_CHOTEI_YMD = '0000'" strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_NENDO = " & mstrNendo strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_YMD = " & mstrChoteiMD strSql = strSql & " AND GI_NAIYOM.INM_KYOKA_YMD_TOSHO < '19970401'" strSql = strSql & " AND IBM_SHIYORYO_CD BETWEEN '000' AND '099'" gobjDb.ExecuteSQL strSql gfncFilenew = geRtn.OK Exit Function ErrProc: gfncFilenew = geRtn.Cancel End Function ****************************************************************************************** というのでエラーでとまってます。 SELECT文で連結し条件の列を選択して、それをCREATE VIEWでTYUSYUTU(仮想表)にしてからUPDATEしているのですがエラーになってしまいます。 誰か助けてください。
だい2001-07-16(月) 14:32
> UPDATE文は複数の表ではつかえないし・・・・。 複数テーブルからなるビューを更新可能かどうかはそのDBMSに依存しますが、もし更新不可であれば、 ビューの元になっているそれぞれの表に対して、UPDATE文を発行してあげればよいかと思われます。 もちろん、片方だけ更新されたり等の不整合を避けるために、トランザクション処理を行います。
匿名3552001-07-16(月) 14:38
> strSql = "UPDATE TYUSYUTU" > strSql = strSql & " SET INM_CHOTEI_NENDO = '0000',INM_CHOTEI_YMD = '0000'" > strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_NENDO = " & mstrNendo > strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_YMD = " & mstrChoteiMD > strSql = strSql & " AND GI_NAIYOM.INM_KYOKA_YMD_TOSHO < '19970401'" > strSql = strSql & " AND IBM_SHIYORYO_CD BETWEEN '000' AND '099'" ひょっとしてWHERE句が抜けてるだけでは?(ANDはあるけど…)
VB-MAN2001-07-17(火) 09:00
> > UPDATE文は複数の表ではつかえないし・・・・。 > > 複数テーブルからなるビューを更新可能かどうかはそのDBMSに依存しますが、もし更新不可であれば、 > ビューの元になっているそれぞれの表に対して、UPDATE文を発行してあげればよいかと思われます。 > もちろん、片方だけ更新されたり等の不整合を避けるために、トランザクション処理を行います。 > 返信ありがとう♪ トランザクション処理ですか・・・すいません勉強不足でトランザクションの意味がわかりません簡単に どういう処理なのかおしえていただけないでしょうか?後は本買ってがんばってみようと思います。
よねKEN2001-07-17(火) 09:33
> > > UPDATE文は複数の表ではつかえないし・・・・。 > > > > 複数テーブルからなるビューを更新可能かどうかはそのDBMSに依存しますが、もし更新不可であれば、 > > ビューの元になっているそれぞれの表に対して、UPDATE文を発行してあげればよいかと思われます。 > > もちろん、片方だけ更新されたり等の不整合を避けるために、トランザクション処理を行います。 > > > 返信ありがとう♪ > トランザクション処理ですか・・・すいません勉強不足でトランザクションの意味がわかりません簡単に > どういう処理なのかおしえていただけないでしょうか?後は本買ってがんばってみようと思います。 よくあるたとえですが、 銀行のATMでお金を引き出すとして、3万円引き出した場合、 ・センターの情報を3万円引き出したことにします。 ・ATMから3万円払い出されます。 この一連の流れの中で、 ・センターの情報は3万円引いて更新されたけど、ATMからはお金は払い出されなかった。 ・センターの情報は更新されなかったけど(お金は減っていない!)、ATMからはお金は払い出された。 のような状態になっては困ります。 こんなとき、 ・センターの情報が更新され、ATMからも現金が支払われた→成功 ・センターの情報が更新されず、ATMからも現金が支払われない→失敗 の2つの状態のどちらかにしかならないようにしないといけません。 この関連のある処理は全体として、1つの処理として扱うことにします。 これがトランザクション処理です。 メソッドでいうとBeginTrans(トランザクション処理を始めます)、 CommitTrans(成功)、Rollback(失敗)になります。
このページと関連する記事:
#38494-0分散トランザクションモード??2001-02-08(木) 14:21#27022-0VBよりACCESSを使用した際の外部結合の方法2000-08-01(火) 11:55
#27165-0OracleでのSQL構文2000-08-02(水) 17:54
#2223-0大量データの更新について2002-05-20(月) 12:05
#8269-0複数のテーブルに対してのUPDATEの方法がわからないんですが・・2000-03-07(火) 14:27
#1821-0アクセスファイルの共有について2002-03-19(火) 12:26
#409-1MySQLの更新について2004-04-05(月) 11:39
#1257-0UPDATE文の値を別テーブルから取得したい2001-12-14(金) 10:19
#21365-0クエリー、トランザクションってなんですか?2001-06-16(土) 01:23
#447-0オラクルで表と結合してデ−タの更新処理を行う2001-08-05(日) 13:43
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。