Microsoft Access2000で、ActiveXコントロールのMicrosoft BarCode Controlをレポートフォームに貼り付け、Valueプロパティに値を設定しようとしたところ、

「連結または非連結フレームはOLEオブジェクトがありません」

というメッセージが出てエラーになってしまいます。
これはどういう意味なのでしょうか?
あるテーブルのバーコード(JAN13)のフィールドからデータを持ってきて、変数にいれて、その変数を使用してBarCodeコントロールに値を設定したいのですが、どういうふうにコードを書けばよいのでしょうか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

確かにデザインビューのプロパティでValueは設定できますが、VBAでは設定・参照とも不可のようです。


ならばと、ControlSourceに直接式を入れてみようと試みましたがこれも不可でした・・・・・(^ ^;

そんなわけで、印刷用の一時テーブルを作成して、そこに必要項目を全て設け、レポートのRecordSetにしてしまうのが一番手っ取り早いと思われます。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
うーん、やっぱり一時テーブルを作るしかないのか・・・
それとも、適当なフリーソフトを探すか。
とりあえず、いろいろやってみます。
どうもありがとうございました。

お礼日時:2001/10/17 09:46

レポートのデータにJAN13のフィールドが含まれているのであれば、BarCode ControlのControlSourceプロパティにJAN13を指定すれば問題なく表示されると思いますが?



ただ、
>その変数を使用してBarCodeコントロールに値を設定したいのですが
との事ですが、テーブルにはJAN13は保存していないのでしょうか?

この回答への補足

回答ありがとうございます。
補足しますと、
SQLで、テーブルからある条件のデータ(1件)をRecordSetに抽出して、そのデータのJANコードを変数に代入しています。
実際には、レポートフォームにレコード名や画像データや文字データとバーコードを一緒に表示して印刷するプログラムなんです。
それで、ある条件というのが別のテキストファイル(またはそれをインポートしたテーブル)にあるレコード名で、そのレコード名で元のデータテーブルを検索して、ヒットしたレコードを1件ずつレポートに表示して印刷したいのです。
したがって、ControlSourceプロパティにフィールド名を指定しておけないんです。
ValueプロパティにはVBAでは直接コードを指定出来ないんでしょうか。プロパティシートに手直接入力することは出来るのですが。
以上、補足でした。

補足日時:2001/10/16 16:51
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには

Accessにおいて。
帳票フォームの"詳細"に非連結のコントロール(例:テキストボックス)を配置し、それぞれ別々の値を持たせることは可能なのでしょうか?

例えば。
VBAにおいて、カレントレコードのAという値とBという値を計算し、その値を非連結のテキストボックスに挿入したとします。
単票フォームであれば、問題なくテキストボックスには計算後の値が表示されるわけですが……
帳票フォームの場合では、"規定値"に計算式を入れたときと同様、先頭の値と同じものが連続するテキストボックスに表示されてしまいます。
これを回避し、計算後のデータを連続するテキストボックスにそれぞれの値として表示させるには、どのようにすればよいのでしょうか?

もちろん、連結させたコントロールを使用すれば、問題はないのですが……
状況によっては、これが行えた方が便利かと思い、質問させていただきます。

「帳票フォームでは不可能である」といった回答でもかまいません。
どうぞよろしくお願いいたします。

Aベストアンサー

非連結のTEXTBOXの値は一つなので、帳票フォーム上で別々の値を持つような設計は出来ません。
新たに暫定的なテーブルを作成して、元になるテーブルとリレーションさせる方法でないと難しいと思います。

Qアクセスのフォームで連結コントロールを追加するには?

アクセスの入力フォームで、すでにほぼできあがったフォームにあとから追加したい項目があるのですが、方法がわかりません。リストボックスなら連結で追加できるのですが、普通のテキストボックス(連結)を追加できません。初めからやり直す以外に方法はあるのでしょうか?よろしくお願いします。。。

Aベストアンサー

リストボックスだと追加した場合にテーブルと列を選ぶダイアログが表示されます。
しかし、テキストボックスだと何も表示されずに[非連結]で配置されてしまいます。
プロパティダイアログを表示してコントロールソースをドロップダウン表示しても新しい[列名]が出てきません。
どうにかして、新しい[列名]を指定できないでしょうか?

と、いうことであれば・・・。

(1)フォームのプロパティを表示。
(2)レコードソースの右端の[・・・]をクリック。
(3)新しい列名をクエリに追加して下さい。
(4)当該のテキストボックスのコントロールソースから選びます。

これでOKかと!

*あくまでも、憶測です。

QアクセスのActiveXコントロールについて。

おはようございます。アクセス2003を使用しているのですが、ActiveXコントロールでは何ができるのか詳しく知りたいです。どの本にも載っていなかったので詳しく教えてください。よろしくお願いします。

Aベストアンサー

>他に便利な機能があれば例としてあげてもらいたいです
・・と言ってもTreeViewを使ってフォルダを選択したりとかになりますが
>ActiveXコントロールのリストの中に英語のつづりでたくさんあるのですが
ActiveXコントロールで表示されてもAccessではサポートされていないものも一緒に表示されます。

>とにかく試しに使ってみて分かるものでしょうか
プロシージャでプロパティにソースなどをセットしてイベントを発生させて使うようになりますので色々試しても良いと思います。

下記にActiveXの概略がありますので参考にしてみてください。
http://www.microsoft.com/japan/developer/library/vccore/_core_activex_controls.3a_.overview.htm

http://www.microsoft.com/japan/developer/library/vccore/_core_activex_controls.htm

参考URL:http://www.microsoft.com/japan/developer/library/vccore/_core_activex_controls.htm

>他に便利な機能があれば例としてあげてもらいたいです
・・と言ってもTreeViewを使ってフォルダを選択したりとかになりますが
>ActiveXコントロールのリストの中に英語のつづりでたくさんあるのですが
ActiveXコントロールで表示されてもAccessではサポートされていないものも一緒に表示されます。

>とにかく試しに使ってみて分かるものでしょうか
プロシージャでプロパティにソースなどをセットしてイベントを発生させて使うようになりますので色々試しても良いと思います。

下記にActiveXの概略があ...続きを読む

QAccess 連結フィールド値を自動で表示

Accessでフォーム上にサブフォーム(データシート)を作成すると、
新規レコード欄にも自動的に連結フィールドの値が表示されます。

このサブフォームをメインフォーム上に作らずに、
コマンドボタンクリック時にあるフィールドが一致する(上記で言う連結フィールド)データを表示したサブフォーム(データシート)を開くかたちにしたいのですが、そうすると当然ながら新規レコード欄には連結フィールドの値は表示されません。

これをメインフォーム上にサブフォームを作った時と同じように、新規レコード欄に連結フィールド値を表示させるにはどうしたら良いでしょうか?

サブフォームを開く段階で新規レコードに結合フィールドの値を(VBAで)入力する事も考えましたが、そうするともしそこにデータを入れるつもりじゃなくても1つのレコードとしてデータが残ってしまいます。

メインフォーム上に作ったサブフォームなら、新規レコードに結合フィールドの値は表示されているものの、その他のフィールドにデータを入力しなければ1つのレコードとしてデータが残ることはありません。

こういう事が可能かどうかわかりませんが、ご存知でしたら教えてくださいませ。
よろしくお願いします!

Accessでフォーム上にサブフォーム(データシート)を作成すると、
新規レコード欄にも自動的に連結フィールドの値が表示されます。

このサブフォームをメインフォーム上に作らずに、
コマンドボタンクリック時にあるフィールドが一致する(上記で言う連結フィールド)データを表示したサブフォーム(データシート)を開くかたちにしたいのですが、そうすると当然ながら新規レコード欄には連結フィールドの値は表示されません。

これをメインフォーム上にサブフォームを作った時と同じように、新規レコー...続きを読む

Aベストアンサー

> そうするともしそこにデータを入れるつもりじゃなくても1つのレコードとして
> データが残ってしまいます。

コントロールに直接代入する代わりに、DefaultValue(プロパティシート上では
『データ』タブに『既定値』として表示されます)への代入にすれば、ほぼメイン
フォーム上にサブフォームとして作った場合と同様になるかと思います。


例えば、コマンドボタンのクリック時で処理するなら、以下の通り:

Private Sub コマンド0_Click()

  'データ入力用のフォーム(名前はPF1と仮定)を開く
  DoCmd.OpenForm "PF1"

  '呼び出し元の『ID』テキストボックスと同じ値を、上記フォームの『ID』
  'テキストボックスの既定値(DefaultValue)に設定
  Forms!PF1!ID.DefaultValue = Me!ID

End Sub


・・・以上です。

QWordのVBAにてコントロール名に変数を使いたい

Wordでコントロールツールボックスのコントロールを複数個並べて、コントロール名を変数で切り替えたいと思っています。

例えば、テキストボックスを3つ並べた時、以下のように「i」を変数にしてFor文でまわしたいです。
【例】
TextBox1
TextBox2
TextBox3
 ↓
For i=1 to 3
TextBox「i」= ・・・(A)
Next i

Excelであれば、(A)の部分は、以下のようにOLEObjectsを使えば実現できますが、Wordではコンパイルエラーが出てしまいます。

Dim strName As String
For i=1 to 3
strName = "TextBox" & i
Me.OLEObjects(strName).Object・・・
next i

どのようにすればよいのか、ご教授いただけると幸いです。
お願いします。

Aベストアンサー

訂正:
OleObject が、TextBox だけではないので、ClassType を分岐に加えました。

Sub Test2R()
  Dim b As MsoShapeType
  Dim shp As Variant
  Dim i As Integer
  i = i + 1
  For Each shp In ThisDocument.Shapes
    If shp.Type = msoOLEControlObject Then
      If shp.OLEFormat.ClassType = "Forms.TextBox.1" Then
        shp.OLEFormat.Object.Text = Chr(64 + i) 'ABCにしてみました。
        i = i + 1
        If i >26 Then Exit For
      End If
    End If
  Next
End Sub

p.s. しかし、Word 2003 と Word 2007 とは、こういう違いがあるとは思いませんでした。

訂正:
OleObject が、TextBox だけではないので、ClassType を分岐に加えました。

Sub Test2R()
  Dim b As MsoShapeType
  Dim shp As Variant
  Dim i As Integer
  i = i + 1
  For Each shp In ThisDocument.Shapes
    If shp.Type = msoOLEControlObject Then
      If shp.OLEFormat.ClassType = "Forms.TextBox.1" Then
        shp.OLEFormat.Object.Text = Chr(64 + i) 'ABCにしてみました。
        i = i + 1
        If i >26 Then Exi...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報