アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセス2000を使用しています。
フォームでテーブルにデータを入力しています。
フィールド1に【みかん A-1】と入力するとフィールド2に自動的に【みかん】と
空白の前の文字を返したいのですが可能でしょうか?
必ず半角のスペースが間に入りますのでその前の文字(文字数は決まってません)を
自動で入力されるようにしたいです。
テーブルのフィールドにも入力されるように反映もしたいです。
DLookupではやはりフィールド全体になりますよね?

分かりにくい説明ですがよろしくお願いします。
初心者ですので分かりやすく教えて頂けると助かります。

A 回答 (6件)

Option Compare Database




Public Function CutStr(ByVal Text As String,
               ByVal Separator As String,
               ByVal N As Integer) As String
  Dim strDatas() As String

  strDatas = Split("" & Separator & Text, Separator, , 0)
  CutStr = strDatas(N * Abs(N <= UBound(strDatas)))
End Function

上の CutStr関数を使うと簡単に実現できます。

? CutStr("AAA BBB", " ", 1)
AAA
? CutStr("AAA BBB", " ", 2)
BBB
「アクセス 入力した文字を自動で他のフィー」の回答画像1

この回答への補足

上のコードはどこにしたらいいのでしょうか?
画像ではテキスト3のコントロールソースがありますがテキスト3は
新たにどこかに作る感じですか?
全くの無知でお恥ずかしいです。。。

補足日時:2013/10/30 15:55
    • good
    • 0

補足:iif関数を使わない例



=CutStr([テキスト1] & ""," ",1)
    • good
    • 0

フィールド1の更新後処理のイベントで、



Private Sub フィールド1_AfterUpdate()
  Dim var As Variant
  'split関数で変数varに文字列を半角スペースのところで分離して格納します。配列です。
  var = Split(Me!フィールド1, " ")
  '分解した文字列の最初を取り出しフィールド2にいれます
  Me!フィールド2 = var(0)
End Sub

でいいのでは?
更新後処理ですから、フィールド1に入力後
フィールド2などをクリックしてフォーカス
を移動するようにします。
    • good
    • 0
この回答へのお礼

出来ました!!ありがとうございました。

お礼日時:2013/10/30 15:55

Q1、上のコードはどこにしたらいいのでしょうか?


A1、標準モジュールに関数(Function)として登録します。

Q2、テキスト3とは?
A2、フィールド2に相当します。

つまり、標準モジュールにDlookup()と同じ働きをする関数CutStr()を登録。
もって、[フィールド2]のコントロールソースを指定して目的を達成。
そういう回答です。

この回答への補足

フィールド2には文字はでますがやはりコントロールソースを変更してしまうと
テーブルに反映されずに入力できていませんでした。
テーブルに反映されるようにしたいです。
やり方を勉強したいので、あれば教えて下さい。

補足日時:2013/10/31 09:53
    • good
    • 0

>テーブルのフィールドにも反映したい。



失礼。ここは読んでいませんでした。連結列は

Private Sub フィールド1_BeforeUpdate(Cancel As Integer)
  Me.[フィールド2] = CutStr([フィールド1] & "", " ", 1)
End Sub

と、イベントを利用すべきでした。

この回答への補足

イベントでしてみたのですがコンパイルエラーがでます。
SubまたはFunctionが定義されていません。となるのですが
イベントに書き込むだけではダメなのでしょうか?

補足日時:2013/11/01 11:57
    • good
    • 0

CutStr()は関数として標準モジュールに登録します。

「アクセス 入力した文字を自動で他のフィー」の回答画像6
    • good
    • 0
この回答へのお礼

できました!丁寧にありがとうございました。
勉強になりました。

お礼日時:2013/11/01 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています