過去の桐井戸端BBS (桐ver.8)
28619 よく使う宛名ラベルをシート毎にまとめて印刷しておいて郵送するたびに封筒に貼るという使い方をしたい 備後東城のYAPPON 2004/12/28-11:15
はじめまして。
dBASE系のデータベースソフトで勤務先工場で使う事務処理プログラムをいくつか作っていたのですが、
MS-DOSが使えるマシンが買えなくなってきたので、WINDOWS環境への移行の為、
3年前くらいに桐ver8を購入してもらいました。
しかしながら、購入直後に転勤で工場を離れたので桐8も放置されていたのですが、
今年になって工場に復帰しましたので、本腰を入れて桐8を使ってWINDOWS上への
移植作業に取り掛かろうとしているところです。

 まず簡単なものから移植しようと、住所録データからよく送る宛名ラベルを印刷させるプログラムを作ろうと
思っていろいろやってみたのですが、どういう機能を組み合わせればよいのかよく分かりません。
 住所録データの表から、フォーム上で印刷したいデータを検索表示させ、枚数を指定して
印刷用の表に枚数分のデータを転送して、印刷用データの表をそのままレポート機能でタックシールに印刷させる流れです。
 1データ1枚ラベルの印刷なら、表の絞込みとレポート機能だけで良いのですが、
よく使う宛名ラベルをシート毎にまとめて印刷しておいて、郵送するたびにうがして封筒に貼るという使い方をしたいので、
こういう処理が必要になります。
 1つの表をフォームに関連付けて操作する例はマニュアルに載っているのですが、
2つ以上の表をフォームに関連付ける方法がよくわかりません。
 マニュアルや「桐ならできる」シリーズの本の中をいろいろ探してみたのですが、
適当な解決方法が分からず困惑しております。

 初歩的な質問で恐縮ですが、アドバイスいただければと投稿させていただきました。
お分りの方がおられましたら、よろしくお願いいたします。

28620 Re:フォームによる2表間のデータ転送 うにん 2004/12/28-12:29
記事番号28619へのコメント

> 1データ1枚ラベルの印刷なら、表の絞込みとレポート機能だけで良いのです
>が、よく使う宛名ラベルをシート毎にまとめて印刷

1シートが99枚以下なら、「レコードの繰り返し数」で指定すればOKです。

28621 Re:フォームによる2表間のデータ転送 コルネ 2004/12/28-13:23
記事番号28619へのコメント
今日は、桐では印刷用の表もクエリーも不要です。

住所録データの表から該当レコードを絞り込んで、印刷します。
レポートの[現在の表示状態で表を印刷する]をオンにして印刷します。
28622 Re:フォームによる2表間のデータ転送 宮城 2004/12/28-14:06
記事番号28619へのコメント
備後東城のYAPPONさん、こんにちは。それではオールドファッションのも。

メインでワークファイルを開いておきます。

表 "C:\K3\Data\入力用\宛名ラベル印刷.tbl",モード=専有

印刷ボタン用の kevは次。

手続き定義開始 b印刷nclick()
 メソッド呼び出し @フォーム.更新モード設定(0)
 手続き実行 読み込み手続き()
 繰り返し &カウンタ=1,(n-1)
  行挿入 [都道府県]=" "
 繰り返し終了
 手続き実行 ラベル印刷()
手続き定義終了

手続き定義開始 読み込み手続き()
 編集表 "C:\K3\Data\入力用\宛名ラベル印刷.tbl"
 行削除 *,圧縮
 読み込み 表,"住所録.tbl",編集表=する
手続き定義終了

手続き定義開始 ラベル印刷()
 レポート印刷 "宛名ラベル.rpt",部数=1,編集表=する,プレビュー=する
 編集表 "住所録.tbl"
手続き定義終了

ワークファイルに関しては Dos桐感覚で処理すればいいと思います。

(変な繰り返しはシールを無駄なく使うため。1シート12枚なら、ボタンとkevは12件作っておきます。)

28652 早速のアドバイスありがとうございました 備後東城のYAPPON 2005/01/05-16:06
記事番号28619へのコメント
 あけましておめでとうございます。
 昨年の仕事納め前に書き込んで正月休みに入ってしまい、今日の仕事始めに見に来たところ、
書き込んですぐに複数のアドバイスいただいていて、大変感激しています。

うにんさん曰く、
>1シートが99枚以下なら、「レコードの繰り返し数」で指定すればOKです。

 あっ、こんなに簡単にシート毎の同じ内容の印刷ができるのには気がつきませんでした。
 この機能を使えば複雑な処理を使わなくても簡単にできそうですね。

コルネさん曰く、
>住所録データの表から該当レコードを絞り込んで、印刷します。
>レポートの[現在の表示状態で表を印刷する]をオンにして印刷します。

 別にフォームを作らなくても、絞込みと印刷の桐のコマンドを実行するだけでできるわけですね。
気がつきませんでした。

宮城さん曰く、
>(変な繰り返しはシールを無駄なく使うため。1シート12枚なら、ボタンと
>kevは12件作っておきます。)

 まだ、桐の一括処理の方は完全に理解できていませんので、流れは分かるものの手探り状態です。
 "kev"とは何を指すのかまだ分かっていません。

 以上お教えいただいたアドバイスに従って、もう一度作り直してみたいと思います。

 dBASE系Windowsソフトが少なく、あってもDOSの資産を継承できずユーザーもおらず参考書籍が無いので困り、
AccessはクエリーとVBAがもうひとつ理解し辛くてモノにできず、
国産でDOS時代から定評のあった桐で何とかならないかと望みを託しております。

 単なる「教えて君」にならないように努力しますが、行き詰まったらまた質問すると思いますので、
今後もよろしくお願いします。

28654 是非、桐を使いこなしてください。(^^ ONnoji 2005/01/05-21:29
記事番号28652へのコメント
> dBASE系Windowsソフトが少なく、あってもDOSの資産を継承できずユーザーもおらず参
>考書籍が無いので困り、AccessはクエリーとVBAがもうひとつ理解し辛くてモノにできず、
>国産でDOS時代から定評のあった桐で何とかならないかと望みを託しております。

備後東城のYAPPONさん、こんばんは。

本家dBASEは「逆説」ソフトに吸収されてしまいましたね。(T_T)

本題ですが、桐の対話操作は browseコマンドに驚くほど似ていますよ。
さらに、桐のコマンド文法も dBASE に酷似しています。
もちろん多少の違いはありますが、全体的な構造は驚くほどよく似ています。
名称の違いに戸惑いますが、関数もよく似ています。

もしも、イベント処理でアプリケーションをお作りになるのなら、
今までのVB・VBAのイベントドリブンな考え方も生かせると思います。

個人的な感想ですが…
桐にはAccessに劣らない生産性があると思っています。

是非、桐を使いこなしてください。(^^v


28655 Re:"kev"とは何を指すのかまだ分かっていません。 ONnoji 2005/01/05-22:08
記事番号28654へのコメント
> "kev"とは何を指すのかまだ分かっていません。

備後東城のYAPPONさん、こんばんは。

桐の一括処理は拡張子( .cmd )、
dBASE3の一括処理は拡張子( .prg ) ※ただし、dBASE2では( .cmd )

一方、Win桐のフォーム( .wfm )のイベント発生に対応して実行する、
イベントハンドラ(および一般手続き)を記述したファイルの拡張子( .kev )です。

KEV とは Kiri EVent の意味だろうと思われます。

Access のことはよく知りませんが、KEV は PRIVATE SUB のことだったような…
※ぜんぜん自信無し(^^ゞ

<蛇足>

procedure ○×△
 :
 :
return

は、

手続き定義開始 ○×△( )
 :
 :
手続き定義終了

※ちなみに私は dBASE4 はほとんど使ったことがありません。(^^ゞ


28657 Re:是非、桐を使いこなしてください。(^^ 備後東城のYAPPON 2005/01/06-10:03
記事番号28654へのコメント
 ONnojiさん、励ましのお言葉ありがとうございました。

 DOS時代に使っていたのはdBXL/QuickSilverでした。
 プログラミング暦は、大学で習ったCOBOLに始まり、N-BASIC→Turbo PASCAL→dBXLと変遷してきたので、
それほど苦労はしなかったのですが、Windowsになってプログラミングスタイルががらっと変わってしまい、
Visual dBASEで一つ社内アプリケーションを作ったものの、前ほど思うようにプログラムを作れなくなってしまいました。
(40代になって頭が固くなってしまったという面もあるのですが)

>本題ですが、桐の対話操作は browseコマンドに驚くほど似ていますよ。
>さらに、桐のコマンド文法も dBASE に酷似しています。
>もちろん多少の違いはありますが、全体的な構造は驚くほどよく似ています。
>名称の違いに戸惑いますが、関数もよく似ています。

 そうですね。マニュアルを見ると個々のコマンドはdBXLでいうあれだなと直感的に理解できています。
 後はそれをつないで流れるようにしてやれば、結構複雑なこともできそうな感じはしています。

>個人的な感想ですが…
>桐にはAccessに劣らない生産性があると思っています。

 それに最後の望みを託しています。
 一括処理が日本語の命令で記述できるので、可読性が高いプログラムが作れそうです。
 早くそのレベルに達せられるよう頑張りたいと思っています。
 今後ともよろしくお願いします。

28658 DOSスタイルとWindowsスタイル ONnoji 2005/01/06-10:33
記事番号28657へのコメント
>Windowsになってプログラミングスタイルががらっと変わ
>ってしまい、Visual dBASEで一つ社内アプリケーションを作ったものの、
>前ほど思うようにプログラムを作れなくなってしまいました。

備後東城のYAPPONさん、こんにちは。

確かに DOSスタイルとWindowsスタイルはかなり違いますね。
どうしても頭の切り替えが必要になると思います。

手前味噌ですが、以下は拙作HPからの引用です。
-----------------------------------
http://www.geocities.jp/siliconvalley_bay_7565/column07.htm

手順実行型( DOS ) → イベント駆動型( Windows ) へ変更することには壁があります。
ただし、この壁は桐に限った問題点ではありません。
かつて世界中で使われた XBASE でさえイベント駆動型に移行するのに困難を極めました。
従って桐固有の問題ではないと言えますので、すこし安心してください。

手順実行型( DOS )では製作者(プログラマ)が全知全能の創造主ですから、何から何まで自分の世界を構築できました。
しかし、イベント駆動型( Windows )では製作者(プログラマ)は創造主の地位を失います。
判りやすく言えば、製作者(プログラマ)はソフトの召使い程度になります。

手順実行型( DOS )では…
処理の実行をするのは製作者(プログラマ)です。
利用者(ユーザ)は何も出来ずに画面の指示に従っているだけです。
このように手順実行型( DOS )では、製作者(プログラマ)は世界を構築した充実感や喜びを感じることができました(本当かな〜?)。

イベント駆動型( Windows )では…
処理の実行をイベントとして発起するのは利用者(ユーザ)です。
イベントとして発起された処理を作るのが製作者(プログラマ)です。
イベント駆動型( Windows )では、製作者(プログラマ)は発起されるイベントに対応した手続きの内容を作るだけです。

従って、イベント駆動型( Windows )のコード製作に面食らう製作者(プログラマ)が多いだろうと思います。

しかし、アプリケーション設計というのは、コードを書くだけではありません。
アプリケーション全体の構想・構成などはイベント駆動型( Windows )でも製作者(プログラマ)が行うものです。
-----------------------------------


28734 宛名ラベルの1シート印刷フォーム完成 備後東城のYAPPON 2005/01/15-17:05
記事番号28652へのコメント
 先日は、いろいろとアドバイスをありがとうございました。
 いただいたアドバイスを元に、「絞込み」を使った検索のコマンドボタンとレポートの
「レコードの繰り返し数」を使ったラベルの1シート印刷実行のコマンドボタンをフォームに定義したところ、
あっさりと宛名ラベル印刷用のプログラムが完成しました。

 データの入力修正は表編集機能をそのまま利用するようにしたのですが、桐の表は項目毎にFEPの
制御とか文字数の制限の設定ができるので、dBXLの時のようにプログラムで入力時のチェックを
かけなくて済むため、大変便利ですね。
 これなら、オペレーターの入力ミスも防げますし、郵政公社のHPからダウンロードした郵便番号データを使って、
郵便番号から自動で住所を参照するといった仕掛けも組み込めて、格段に使いやすくなりました。

 次は、下請加工先に送るサンプル袋に貼るラベルの作成プログラムを行う予定です。
 これは品名毎に印刷枚数が異なるため、一括処理を使わざるを得ないようですが、
ここのBBSの過去ログに同じようなやり方の質問と回答が掲載されているのを見つけましたので、
それを参考に一括処理に初挑戦するつもりです。

 アドバイスいただいた皆さんのように、ホイホイと桐のアプリケーションを作れるように早くなりたいと思います。
 簡単ですが、プログラム完成のご報告と御礼まで。

戻る