No11397.フィールドサイズより長い文字列をテキストボックスに貼り付けた時のエラー
| タイトル | : フィールドサイズより長い文字列をテキストボックスに貼り付けた時のエラー |
| 記事No | : 11397 |
| 投稿日 | : 2008/06/01(Sun) 11:22 |
| 投稿者 | : akuseku |
OS: XP SP3 Access Version: 2002 SP3
テキスト型フィールド連結テキストボックスに フィールドサイズより長い文字列を クリップボードから貼り付けると、 「文字列が長すぎて編集できません」 と当然怒られます。
このエラー発生前に文字列をカットしてしまいたいのですが、 うまくできません。 このエラーは テキストボックスのChnage, BeforeUpdateイベント前に発生します。 Dirtyイベントの後に発生するので、これだ!と思ったのですが、 今度は貼り付けた値を取得する方法が見つかりません。 Value, Tetx, OldValue プロパティ全部が貼り付け前の値です。
最後の手段としては、 フィールドサイズを増やすか コマンドボタンからAPI経由でクリップボード取得してごにょごにょ・・・ しかないと思うのですが、 できるだけシンプルにしたいので、 どなたか妙案が有りましたら教えてください。
因みに 数値型連結テキストボックスだと フォーカスを抜けるときまでエラーが発生しないので 余裕で処理できてます。
|
| タイトル | : Re: フィールドサイズより長い文字列をテキストボックスに貼り付けた時のエラー |
| 記事No | : 11398 |
| 投稿日 | : 2008/06/01(Sun) 16:32 |
| 投稿者 | : hatena |
> テキスト型フィールド連結テキストボックスに > フィールドサイズより長い文字列を > クリップボードから貼り付けると、 > 「文字列が長すぎて編集できません」 > と当然怒られます。 > > このエラー発生前に文字列をカットしてしまいたいのですが、 > うまくできません。
非連結コントロールにして、Changeイベントでカットしたらどうでしょうか。
テキスト型フィールド名 F1 (フィールドサイズ 10) 非連結テキストボックス名 txtF1 とすると、
'レコード移動時 Private Sub Form_Current() Me.FText1 = Me.FText End Sub
'txtF1の更新後処理 Private Sub txtF1_AfterUpdate() Me.F1 = Me.txtF1 End Sub
'txtF1の変更時 Private Sub txtF1_Change() If Len(Me.txtF1.Text) > 10 Then Me.txtF1.Text = Left(Me.txtF1.Text, 10) End Sub
単票フォームの場合です。 帳票フォームの場合はもう少し工夫が必要になります。 ご希望でしたらおっしゃってください。
|
| タイトル | : Re^2: フィールドサイズより長い文字列をテキストボックスに貼り付けた時のエラー |
| 記事No | : 11404 |
| 投稿日 | : 2008/06/02(Mon) 12:10 |
| 投稿者 | : akuseku |
> 非連結コントロールにして、Changeイベントでカットしたらどうでしょうか。
その手がありましたね!
> Private Sub Form_Current() > Me.FText1 = Me.FText > End Sub
Me.txtF1 = Me.F1 てことでOK?
> 単票フォームの場合です。 > 帳票フォームの場合はもう少し工夫が必要になります。
帳票フォームでもいけそうですね。
検討してみます。 ありがとうございました。
|
| タイトル | : Re^3: フィールドサイズより長い文字列をテキストボックスに貼り付けた時のエラー |
| 記事No | : 11405 |
| 投稿日 | : 2008/06/02(Mon) 12:15 |
| 投稿者 | : hatena |
> > Private Sub Form_Current() > > Me.FText1 = Me.FText > > End Sub > > Me.txtF1 = Me.F1 > てことでOK?
そうです^^; > > 単票フォームの場合です。 > > 帳票フォームの場合はもう少し工夫が必要になります。 > > 帳票フォームでもいけそうですね。
帳票フォームだと、すべての行が同じ表示になってしまうので、 非連結テキストボックスの上に連結テキストボックスを重ねるという 工夫が必要です。
|
| タイトル | : Re^4: フィールドサイズより長い文字列をテキストボックスに貼り付けた時のエラー |
| 記事No | : 11406 |
| 投稿日 | : 2008/06/02(Mon) 13:27 |
| 投稿者 | : akuseku |
> 帳票フォームだと、すべての行が同じ表示になってしまうので、 > 非連結テキストボックスの上に連結テキストボックスを重ねるという > 工夫が必要です。
うわぁ同じ表示になってしまうか・・・。 非連結の上に連結を重ねると入力ができなくなってしまうなぁ。
10桁で良いのにフィールドサイズ255バイトも何かあれだし、 クリップボードのAPI探してみます。
何はともあれ、ご提案ありがとうございました。
|
| タイトル | : Re^5: フィールドサイズより長い文字列をテキストボックスに貼り付けた時のエラー |
| 記事No | : 11407 |
| 投稿日 | : 2008/06/02(Mon) 13:41 |
| 投稿者 | : hatena |
非連結テキストボックス名 名前 txtF1
の上にピッタリと重なるように、
連結テキストボックス コントロールソース F1 名前 F1 タブストップ いいえ
を配置。
'F1のフォーカス取得時 Private Sub F1_Enter() Me.txtF1.SetFocus End Sub
あとは前回と同じコードで。
|
このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています

|