No18384.数字の先頭に0をつける方法
| タイトル | : 数字の先頭に0をつける方法 |
| 記事No | : 18384 |
| 投稿日 | : 2004/04/25(Sun) 20:08 |
| 投稿者 | : こぶー |
OS:WindowsXP Access Version:AC2000 ■表形式(列数:2、項目:番号、名前)のフォームに対し、番号を頭0埋めで表示/登録したい。 どうしても入力規則を使わずに入力させたいので頭に0をつけずに入力し 書式に00000000などといれたのですが変化しませんでした。
そこで以下のように追加したところ 実行時エラー’2115’: ”BeforeUpdate/更新前処理”プロパティまたはこのフィールドの ”ValidationRule/入力規則”プロパティに設定したマクロまたは関数のために、 このフィールドのデータを保存できません。 というエラーが出てしまいます。
番号_beforeUpdate(Cancel As Integer) Dim cn As ADODB.Connection Dim rst As ADODB.Recordset Dim rstnew As New ADODB.Recordset Dim ilen As Integer
Set cn = CurrentProject.Connection Set rst = New ADODB.Recordset rst.Open "W1", cn, adOpenStatic, adLockReadOnly rst.Find "番号 = '" & Format(Me!番号, "00000000") & "'" If rst.EOF Then 'データを追加 rstnew.Open "W1", Application.CurrentProject.Connection _ , adOpenKeyset, adLockOptimistic rstnew.AddNew rstnew!番号 = Format(Me!番号, "00000000") rstnew.Update Me.Refresh ←ここです。 Else MsgBox "重複データあり" ilen = Len(Me!番号) Me!番号.SelStart = 0 Me!番号.SelLength = ilen End If ※使用テーブル W1は番号(String)のみのテーブルです。 問題の部分をはずし、実行すると 入力イメージ>> 番号(入力) 名前(マスタより表示) 00000001 名称1 2 結果イメージ>> 番号 名前 00000001 名称1 00000002 名称2 W1の現在の結果>> 00000001 00000002 2 ←不要!
といった感じです。 ならば、とMe!番号 = Format(Me!番号, "0000")をこのロジックの頭に 記述してみたのですが、その箇所で同じエラーがでてしまいました。 記述すべき箇所がちがうのでしょうか? 入力値(1桁〜8桁)を8桁でフォーマットし、一覧/テーブルに反映する方法がありましたら 教えてください。よろしくお願いします。
|
| タイトル | : Re: 頭0編集で表示・登録できますか? |
| 記事No | : 18385 |
| 投稿日 | : 2004/04/25(Sun) 20:52 |
| 投稿者 | : hatena |
> ■表形式(列数:2、項目:番号、名前)のフォームに対し、番号を頭0埋めで表示/登録したい。 > どうしても入力規則を使わずに入力させたいので頭に0をつけずに入力し > 書式に00000000などといれたのですが変化しませんでした。
書式プロパティでできるはずです。 番号フィールドのデータ型は、数値型になってますか。
|
| タイトル | : Re^2: 頭0編集で表示・登録できますか? |
| 記事No | : 18386 |
| 投稿日 | : 2004/04/26(Mon) 00:23 |
| 投稿者 | : Tkwan |
>>頭に0をつけずに入力し書式に00000000などといれたのですが変化しませんでした。
番号フィールドはStringなので書式設定しても意味がありません。 これが効くのは数値型です。
>>”BeforeUpdate/更新前処理”プロパティまたはこのフィールドの >>”ValidationRule/入力規則”プロパティに設定したマクロまたは関数のために、 >>このフィールドのデータを保存できません。 >>というエラーが出てしまいます。
文字通りそういうことではないのでしょうか?
それともう一点今後の参考のために、
>rstnew.Open "W1", Application.CurrentProject.Connection _ >, adOpenKeyset, adLockOptimistic >rstnew.AddNew >rstnew!番号 = Format(Me!番号, "00000000") >rstnew.Update >Me.Refresh ←ここです。
ここは
rst.Addnew rst!番号=Format(Me!番号, "00000000") rst.Update です。 W1を2回も開く必要は有りません。
|
| タイトル | : Re^3: 頭0編集で表示・登録できますか? |
| 記事No | : 18412 |
| 投稿日 | : 2004/04/27(Tue) 00:00 |
| 投稿者 | : こぶー |
> 番号フィールドはStringなので書式設定しても意味がありません。 > これが効くのは数値型です。 W1テーブルの項目を数値型、書式00000000、主キー指定にしました。 これでいけました。
Tkwan 様、hatena 様 教えていただきありがとうございました。 まだまだ、調べ方も記述の仕方もムダが多いので 日々がんばってステップアップしていこうと思います。 これからもどうぞよろしくおねがいします。
|
このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています

|