tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルSQL更新がうまくいかない。
記事No12574
投稿日: 2008/06/18(Wed) 16:53
投稿者かかし
こんにちわ。いつもお世話になっています。
あるテーブル内(T_値段)でのフィールド名”受付日”が
yyyy/mm/dd("2008/01/01)と登録されているものを
yyyymmdd(2008010)の形に直して
もう一度同じフィールドに更新をかけるかたちでやりたいのですが・・・
SQL文のWhere条件の指定のほうで躓いています。
もう少しで出来そうなのですが・・・
ちなみに
strSQL = "UPDATE T_値段 SET T_値段.受付日 = T_値段.受付日=Left(T_値段.受付日,4) & Mid(T_値段.受付日,6,2) & Right(T_値段.受付日,4)"
strSQL = strSQL & "WHERE len(T_値段.受付日)=8"
と書いて実行するのですがうまくいきません。
どなたかご教授お願いできないでしょうか?
やりたいことはフィールド”受付日”の"/"を取り除きたいだけです。

[ツリー表示へ]
タイトルRe: SQL更新がうまくいかない。
記事No12575
投稿日: 2008/06/18(Wed) 17:33
投稿者これ
> と書いて実行するのですがうまくいきません。

ここの掲示板では、花ちゃんさんをはじめ
皆さんよく書かれていることですが
どううまくいかないのでしょうか?
データベースの種類など環境の記載も必要だと思います。

> strSQL = strSQL & "WHERE len(T_値段.受付日)=8"
更新前の受付日が yyyy/mm/dd 形式なら 長さは 10 では?

[ツリー表示へ]
タイトルRe^2: SQL更新がうまくいかない。
記事No12581
投稿日: 2008/06/19(Thu) 09:43
投稿者かかし
すみません。
OSはXPのHomeです。
データーベースはACCESS利用しています。
SQLを実行すると入ってたものが全て
"0"になってしまいます。

[ツリー表示へ]
タイトルRe^3: SQL更新がうまくいかない。
記事No12582
投稿日: 2008/06/19(Thu) 11:07
投稿者るしぇ
SELECT 文に書き直せば、どんなデータで更新しようとしてるか確認できるのに
してないですよね?そのくらいはしてください。
>Right(T_値段.受付日,4)
間違ってますよね?

>SET T_値段.受付日 = T_値段.受付日=Left(T_値段.
なぜ = (イコール)が2つあるんですか?

>SQLを実行すると入ってたものが全て
>"0"になってしまいます。
文字列型では有り得ないと思いますが、型に関して全く触れていないということは
全く意識できていないということですね。
その状態でデータベースの更新なんてできませんよ。

[ツリー表示へ]
タイトルRe^4: SQL更新がうまくいかない。
記事No12583
投稿日: 2008/06/19(Thu) 13:32
投稿者これ
> 文字列型では有り得ないと思いますが、型に関して全く触れていないということは
> 全く意識できていないということですね。
> その状態でデータベースの更新なんてできませんよ。

きびしい意見ですが 大事なことですよ>かかしさん

Accessならテキスト型であっても 正しい日付形式(yyyy/mm/dd など)で
値が入っているなら、 Year()、Month()、Day() が使えますから

T_値段.受付日 = Year(T_値段.受付日) * 10000
  + Month(T_値段.受付日) * 100
   + Day(T_値段.受付日)

でも目的の結果は得られると思います。
混在しているなら WHERE 条件の LIKE でも使って
抽出しておけばいいでしょう。

本来なら るしぇさんのおっしゃるとおり
型を意識してテーブルを作るべきでしょうし
事前にSELECT文で更新内容も確認すべきでしょうね。
まだ間に合うなら、今からでも調整してみてはいかがでしょう?

[ツリー表示へ]