- PR -

UPDATEステートメントの構文について

投稿者投稿内容
うえつき
会議室デビュー日: 2004/09/06
投稿数: 14
投稿日時: 2004-11-06 10:11
>若干話が逸れますが、MicrosoftAccessはされた事ありますか?

お恥ずかしながら、ACCESSもデータベースとして他からアクセスした
経験はありません。ただのデータベースとしても触った程度です。
(えーとつまり…表計算ソフトの延長でしか触ったことがないです。)
VB6のときもEXCELとテキストデータで事足りる記録しかとらなかったので。

引用:
Accessでテーブル名が[散布基地$]で、no、日付、時間、項目、場所というフィールドがあるとしたら、このテーブルの日付フィールドを更新する時にどういうSQLを書きますか?



もし日付を検索して日付を新しいものに変更するのであれば、

"UPDATE 散布基地 SET 日付=@NewHIDUKE WHERE 日付=@HIDUKE"

CMD.Parameters.Add(New OleDbParameter("@NewHIDUKE", OleDbType.Char))
CMD.Parameters("@NewHIDUKE").Value = cst(format(now,"mm月dd日")
CMD.Parameters.Add(New OleDbParameter("@HIDUKE", OleDbType.Char))
CMD.Parameters("@HIDUKE").Value = HIDUKEData

もしくは、前の書き込みの内容なら、(たとえば8行目なら)

CMD.CommandText = "UPDATE 散布基地 SET 日付 = 'ほにゃらら' WHERE No = '8'"

だと思うんですけど…
根本的に何か間違っていますでしょうか。

EXCELの場合、以下の2点がACCESSからの変更なんだと思うんですが。
・テーブル名の代わりにシートを利用するので[]でシート名を括る。
・また、確実に存在するシートの場合、記号$を付ける
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-11-06 21:57
こんばんは。

>また、なぜDay・Timeの表記を変えてしまったかというと、
>(Excel 側も日付をDayに、時刻をTime に変えてます)
>この形の構文で、漢字かな表記でSQLを作成する方法が見つけられなかったのです…

これでいいんじゃないですか?

>UPDATE 散布基地 SET 日付 = 'ほにゃらら' WHERE No = '8'

フィールド名が漢字ならこれでいいんでは・・。

僕はどちらかというとAccessの方がなじみが深かったから、ExcelでもSQLでデータの
取得が出来るんだと思ったんです。

僕自身もSQLを駆使して・・・って言う程のもんでもないんですけど、
データベースでいろいろSQLを使用していると結構ためになりますよ^^

うえつき
会議室デビュー日: 2004/09/06
投稿数: 14
投稿日時: 2004-11-07 17:01
引用:

>UPDATE 散布基地 SET 日付 = 'ほにゃらら' WHERE No = '8'
フィールド名が漢字ならこれでいいんでは・・。



やっぱりそうですよね?
いったい何がいけないんでしょう、これでは
「Updateステートメントの構文エラーです」
って 私のパソコンでは必ず出るんです(涙)
確認のために、フィールド名はコードの文字をエクセルのセルに
Copy&Pasteもしてみたんですけど、それでも通らないんです。

とりあえずこの仕事はアルファベット表記で行きます。
何故か手元にある日本人の書いた本でもデータベースの
フィールド名が漢字じゃないですし。(データは漢字なのに。)
(でもこの現象、自分のところだけだったらどうしよう。)

データベースに馴染みが無いもので、大変お世話をかけました。
ありがとうございました。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-11-08 08:56
おはようございます。

引用:

うえつきさんの書き込み (2004-11-07 17:01) より:

やっぱりそうですよね?
いったい何がいけないんでしょう、これでは
「Updateステートメントの構文エラーです」
って 私のパソコンでは必ず出るんです(涙)
確認のために、フィールド名はコードの文字をエクセルのセルに
Copy&Pasteもしてみたんですけど、それでも通らないんです。

とりあえずこの仕事はアルファベット表記で行きます。
何故か手元にある日本人の書いた本でもデータベースの
フィールド名が漢字じゃないですし。(データは漢字なのに。)
(でもこの現象、自分のところだけだったらどうしよう。)




なにか原因があるはずで、それを取除けば解決する問題だと思いますよ。

>フィールド名が漢字じゃないですし。(データは漢字なのに。)

 フィールド名が漢字かどうかと、実際のデータに漢字のデータが含まれているのとは
何の関連性もありません。(フィールドサイズ・データ型等は関係する事もありますけど・・)
それとここでは多くは説明出来ませんが、フィールド名は英語で付けるのが一般的では
あります。ただ、Excelをデータ元にしている場合はフィールド名がそのままユーザーの
目に触れる機会が多いと思われますのでフィールド名が漢字の場合も結構あります。

 それにこのUPDATE文には検証の余地は残されていると思いますよ。
テーブル名を[]で囲む必要はないのか。日付フィールドのデータ型を検証してみる。
日付型として認識しているのならデータの前に#が必要だし実際のデータも'ほにゃらら'
じゃまずいでしょうし。Noフィールドについても同様でもし数値型として認識されているの
であればデータをシングルコーテーションで囲むのも間違っています。パラメータを使用する
場合はその時点で対応するのでいいんですが・・。Excel側の実際のセルの型と更新するSQL側
でデータ型が食い違っていないか調べてみて下さい。あとDataTableに格納された時点で
それぞれのフィールドのデータ型も今一度調べて見て下さい。

 後は、いろいろ検証して見て下さい。妥協すると今後同じ事象の時にまた同じ問題で
困る事になりますし・・。僕自身はExcelのフィールド名を漢字にしてDataGridからの
エクスポートが問題なく行われていますので・・・。もし書籍やサイトで同様な事をやって
いるものがあればそれと全く同じもので上手くいくまでやってみて、それから1つずつ自分の
オリジナルにしていけばよいでしょうし・・。

 では、頑張って下さい。

[ メッセージ編集済み 編集者: とっと 編集日時 2004-11-08 09:07 ]
うえつき
会議室デビュー日: 2004/09/06
投稿数: 14
投稿日時: 2004-11-08 10:58
とっとさんのところで動くなら動くはずですね。
加えて丁寧に検証すべきところを示してくださってありがとうございます。
もう一度最初から検証しなおしてみます。

一般的に英語表記なのは承知してるんですが、
書籍やサイトのサンプルコードを参考にして作ったコードは
フィールド名を日本語表記にしない限りは動くし、
エクセルを扱ったものは入門書の類まで
(私の手元にあるものは)みんな英語表記なんで、
無理なのかなーっと勝手に悩んでいたわけです。

少しSQLについて調べてから取り組んでみます。
ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)