• ベストアンサー

Access2000でテキストボックスから文字列抽出

Access2000のフォーム上でのデータの抽出で困っています。 [生年月日年]には、生年月日の年(和暦:2桁)が格納されています。 ここから、[生年月日年1]に生年の上1桁を抽出したいのですが、何も抽出 されません。 下記のようなコードを記述してみたのですが、うまくいきません。 どうしたらよいでしょうか? Private Sub 生年月日年1_Enter() Me![生年月日年1] = MidB([生年月日年], 1, 1) End Sub ちなみに、LeftB もやってみましたが、結果はやはり何も抽出されませんでした。 Mid や Left は固定文字列からの抽出にしか使えないのでしょうか? おわかりになるかた、できるだけ簡単なコードをご教示いただければ、幸いです。

  • ariga
  • お礼率44% (55/123)

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 これでどうですか。 Me![生年月日年1].Text = Left(Me![生年月日年].Value, 1) では。

ariga
質問者

お礼

ありがとうございました。 また、お礼が遅くなってしまってすいません。 やってみたところ、非常にうまくいきました。 MID でもうまくいきました。

その他の回答 (1)

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.2

Accessでは、文字列には Unicode が採用されています(たしか、Access95 以降からだったと思います)ので、半角文字も2バイトになります。 そのため、MidB や LeftB 関数を使う場合には、数字も2バイト文字として考える必要があります。 (詳しくは、HELPの Unicode 形式 を参照してください。) 具体的には、 Me![生年月日年1] = LeftB([生年月日年], 2) または、 Me![生年月日年1] = Left([生年月日年], 1) とすれば、ご希望の処理が可能になると思います。

ariga
質問者

お礼

ありがとうございました。 また、お礼が遅くなってしまってすいません。 半角文字も2バイトだとは知りませんでした。 さっそくチャレンジしてみます。

関連するQ&A

  • ACCESS 文字の抽出方法

    ACCESS2000で開発しています。 簡単なことだと思うのですが、ある文字列のなかから"/"以外の文字を抽出するにはどうすればよいですか? 例)年月日 テキスト ”2008/06/23”               ↓            ”20080623” LEFT関数やMID関数でできるのですが、できれば上記の方法でやりたいと思っています。 よろしくお願いします。

  • Accessでの抽出で完全一致。

    あいまい抽出で下記のような記述を、 完全一致に変更する場合どのように書き換えればいいでしょうか? 以前覚えたのですが、本を手放してしまい忘れてしまいました。 ご指導お願いします。 Private Sub 技術コードで抽出_Click() Dim ipt As String ipt = [技術コード] DoCmd.ApplyFilter , "[担当者コード] Like '*" & ipt & "*'" End Sub

  • アクセス 同じ年生まれの者を抽出する抽出条件の入力方法

    アクセス2000 名簿テーブルに日付時刻型で生年月日を入力し、和暦で(例 S30-05-21)表示させております。クエリで同じ年生まれの者を抽出したいのですが、抽出条件に year([名簿]![生年月日])=1955 とすれば昭和30年生まれの者が抽出できることは分かったのですが、抽出条件に1955ではなく、S30を使って抽出する方法を知りたいのです。 宜しくお願いします。

  • Excelの文字列操作について

    Right・Left・Mid関数は何桁目以降表示しなさい、とか何桁目以降何桁分を抽出しなさいという関数ですが、例えば、@AAAA@BBBBB@CC.***のような文字列があり、文字列の右側から何桁目に@が来るか知る関数はありますか?サンプルの文字列でいうと、***.CC@の順になりますので、7桁目と判るようにできますか?どなたかお知恵をお貸し下さい。よろしくお願い致します。

  • 【Access2000】抽出条件の設定について

    Access2000の抽出条件について質問です。 下記のようなテーブルがあります。 番号が3桁、5桁のものが混在しています。 ※3桁、5桁以外のものはありません。 キー | 番号 | 名前 001 | 11029 | りんご 002 | 332 | みかん 003 | 10154 | ばなな 番号を加工する条件として、 A. 5桁の場合、頭から2桁目から3桁の値を取る B. 3桁の場合は、そのまま値を取る があります。 フィールドの記述は A. 番号加工後: Mid(Left([番号],2) ,3) というところまでは分かりました。 上記の条件をもとにクエリで実行したいのですが、抽出条件はどのように書けばよろしいでしょうか? 識者の方、ご教示いただけますと幸いです。

  • テキストボックスを配置したいのですが

    以下のコードですと、失敗します。 Private Sub CommandButton3_Click() Dim nu7 As MSForms.TextBox Set nu7 = UserForm1.Controls.Add("Forms.TextBox.1", "TextBox1", True) With nu7 .Left = 20 .Top = 50 End With End Sub 間違いをご指摘頂けると、助かります。 どうぞ、宜しくお願い致します。

  • vbaで同じテキストボックスを繰り返し使いたい

    エクセル2003 VBAでデータ入力フォームを作成中です。 データ2種類あり、2つのtextbox(t1 , t2)作りました。 t1のデータ入力後はEnterKeyでExitして private SUB t1.exit(ByVal Cancel As MSForms.ReturnBoolean) でエクセルのセル内への所定の場所に書き込みを実行しています。 ところが次にfocus(tabというのか)が移動する t2では 繰り返しデータを入力したいのです。ですからt1と同じようにしたのではEnterでt1にfocusが逃げてしまいます。データは2桁の数字です。Enterで確定してさらに繰り返しt2内でデータを入れ、0を入力しEnterしたときに初めてt1に移らせたいのです。EnterKeyBehaviorをtrueにするのか また private SUB t2.Exit(ByVal Cancel As MSForms.ReturnBoolean) で記述していいのかわかりません。教えてください。

  • エクセルVBAのコンボボックス

    エクセル2002使用です。 生年月日とかを入力できるコンボボックスを作っているのですが、同じコンボボックスを5つ作ろうとしています。例えば和暦を入力するには Private Sub userform_initialize() With ComboBox(1) .AddItem "昭和" .AddItem "平成" End sub でうまくいくのですが、2個目から5つ目まで同じものを作成する場合、 With ComboBox(2) ・・・ With ComboBox(3) ・・・ と、コードを記述していかないと駄目なのでしょうか? できれば With ComboBox(1: 5) とか、 変数を使って Private Sub userform_initialize() Dim i As Integer For i = 1 To 5 With ComboBox(i) .AddItem "昭和" .AddItem "平成" End With Next End sub といった具合にまとめたいのですが、コンパイルエラーとなってしまいます。 初歩的な質問で申し訳ないのですが、よろしくお願いします。

  • アクセスで期間抽出

    お尋ねします アクセスで納品書のデータベースがあります   納品書データFormには 伝票番号、日付、客先名、数量のフィールドのフォームで テキストボックス1:始めの日 テキストボックス2:終了日 コマンドボタン1:期間で抽出 が配置しています テキストボックス1,2に日付、記入後、コマンドボタン1をクリックして 所要期間でフィルターで抽出するのですがうまく行きません コマンドボタン1クリック時のコード Private Sub コマンド1_Click() Me.Filter = "日付= 'Between" & Me![テキスト1] & "And" & Me![テキスト2] & "'" Me.FilterOn = True End Sub のコードで抽出してくれません、不都合をご指摘下さい なお 指定日での抽出は以下で出来ました。 Private Sub コマンド1_Click()  Me.Filter = "日付= '" & Me![テキスト1] & "'" Me.FilterOn = True End Sub エクセルのモジュールは少しかじったのですがアクセスは 始めたばかりでなかなか要領を得ません 宜しくお教え下さい。

  • ACCESS2003のテキストボックスの最大桁数について

    Access2003のテキストボックスには、MaxLengthプロパティがありません。変わりに以下のような、コードで対応しようと試みたのですが、いまいち動きが悪いのです。以下のコードは、最大4桁までテキストボックスに入力可能とします。 Private Sub txtBox_KeyPress(KeyAscii As Integer)   If Len(txtBox.Text) > 3 Then     KeyAscii = 0   End If End Sub 最大入力桁数4桁を実現していますが、4桁入力後『Insert』キーを押下して、上書きモードでの修正ができません。 以下例1はOKですが、例2が実現できません。 例1:1回目新規入力『12』 ⇒ 2回目修正『123』⇒3回目修正『1234』 例2:1回目新規入力『1234』 ⇒ 2回目修正『9999』 VBのMaxLengthプロパティのようなことはできないのでしょうか?

専門家に質問してみよう