Microsoft Access ClubAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

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 が運営しています

cPanelとPLESKインストール済みのアダルトサイト対応レンタルサーバーをご提供しています。もちろん、海外大手のデータセンターにサーバー機器を収納します。
cPanelやPLESKをインストールしたレンタルサーバー。
アダルトサイトにも対応済み。
海外大手データセンターにサーバー機器を収納しています。

 

ページの先頭へ 前ページへ戻る