製品別FAQ



AG-TECH製品ライン


ご利用いただくお客様層に合わせた AG-TECH サポートサービスをご用意しております。



製品別FAQ参考資料
サポートサービスサポートフォーム

お問い合わせはこちら

製品別FAQ > サポート終了製品 > Formula One


VC++ で MDI 形式のアプリケーションを作成して配布すると、配布先で使用ライセンスエラーになり、新規のドキュメントが作成出来ません。
OCX のライセンスキーを予め取得しておき、そのキー値をドキュメントの初期化時に渡す必要があります。

具体的な方法については、Readme の『Visual C++ プログラマの皆様へ』以下,『ライセンス制御情報』をご参照下さい。 尚、Readme に記載のソースコード中に誤りがありますので、次の通りに修正してご利用下さい。

[誤] reinterpret_cast(&pClassFactory)
[正] (void **)(&pClassFactory)

(2003/05/29)

Formula One 5.0J の動作環境について教えて下さい。
開発元で正式に動作保証された環境は下記の通りです。

OS:Windows 95、Windows NT 4.0
開発環境:VC++ 5.0、VB 5.0、Delphi 3.0、他
ブラウザ:Internet Explorer 4.0

これ以外の環境での動作は保証されません。

但し、Windows 98、VC++ 6.0、VB 6.0 等の環境でも、弊社の環境で確認した限りでは問題無く動作します。 しかし、Windows 2000 に関しては発売時期が著しく異なりますので、弊社での動作確認は行なっておりません。

(2003/05/29)

PrintLandscape プロパティを TRUE(=横) に設定すると、用紙サイズが「レター」に変更されてしまいましたが、どうしてでしょう? コントロールパネルでの、該当プリンタの用紙サイズは「A4」です。
開発元でも、この現象については確認しているようですが、原因はわかっていません。これは、V5.0J で発生します。

現象としては、一度も用紙サイズの設定を行なっていないシートで、PrintLandscape = TRUE 後、指定プリンタが持つ先頭の用紙サイズに変わるようです。シートに予め、用紙サイズを設定して置く事をお勧めします。その方法は、FAQ No.58 をご覧ください。

(2003/05/29)

「G/標準」書式で小数点以下 10 桁以上の場合、整数部の有無によって小数部の表示桁数が違っているようですが仕様でしょうか?
仕様です。次の例を参考にしてみてください。

<例>

1.11111111111111(小数部14桁)-> 1.111111111(小数部9桁表示)
0.11111111111111 -> 0.1111111111(小数部10桁表示)

(2003/05/29)

「売上:1月」というシート名を印刷範囲設定すると、「式の文法が不正です」というエラーが表示されますが、なぜでしょう。シート名の設定では特にエラーはでませんでしたが....。
V5.0J までのバージョンでは、シート名入力時のチェックは特に行なわれません。しかし、許されない文字を使用したシート名を式で使用すると、エラーになります。今のところ仕様ですから、シート名の設定に注意が必要です。

【許されない文字】 / \ > < * ? " | : ; 前スペース

(2003/05/29)

ビットマップファイルを ObjNewPicture メソッドで挿入すると、実行時に「引数が不正です」のエラーが発生するようですが、ビットマップファイルを挿入するにはどうしたらよいのでしょう?
ObjNewPicture メソッドが、ビットマップファイルをサポートしているかはわかりません。もしかすると、メタファイルのみの仕様とも思えます。

ビットマップファイルをシートへ挿入するには、まず、ピクチャ型で扱う必要があり、そのファイルがクリップボードビューア|表示で「ピクチャ」の表示があれば挿入は可能です。

さらに、Windows クリップボード経由でのコピー&ペーストとなる為、使用の際は注意が必要でしょう。また、ピクチャ型として扱うには VB では OLE オブジェクトを使用します。

<例>

'**フォームに OLE オブジェクトを 1 つ配置
OLE1.CreateEmbed "test.bmp" '埋め込みオブジェクトを作成
OLE1.DoVerb vbOLEShow 'オブジェクトをアクティブにする
OLE1.Copy 'クリップボードへコピー
'**クリップボードからシート(1:1)へ貼り付ける
Dim pID as LONG
F1book1.SetActiveCell 1,1 '(1:1)を選択
F1Book1.EditPaste '貼り付ける
F1Book1.ObjGetSelection 0, pID 'オブジェクトのIDを取得
F1Book1.ObjSetPos pID, 1, 1, 5, 15 '希望の位置へ移動

(2003/05/29)

Delphi3.x に於いて、WorkbookDesigner でコピー&ペースト操作を行なうと、『クリップボードが開けません』のエラーが発生します。
開発元では、この現象については確認済みです。次の方法で対応してください。

1)フォーム上に System タブにある "OLE" を貼り付ける。
2)Visible プロパティを False にする。(非表示にするため)

(2003/05/29)

Ver5.0J で、WorkBookDesigner よりシートを印刷が終了してシート画面へ戻ると、セルの文字が巨大化してしまいます。開き直すと元に戻るようですが...。
開発元では、この現象については確認済みです。

現在のところ、コントロールパネルよりプリンタのプロパティにある「スプール設定」を EMF へ変更することで回避できます。設定方法については、プリンタマニュアル等でご確認ください。

しかし、プリンタによっては「スプール設定」ができないものもあるようです(Ex.PostScript 系プリンタ)。この場合は、残念ながら回避策は今のところありません。

(2003/05/29)

V4.0J OCX で開発したアプリケーションを、V5.0J OCX へアップしたら ObjNew メソッドで「20002:引数が不正です」の実行時エラーが発生してしまいました。ObjNew メソッドの仕様が変わったのでしょうか?
仕様はかわっていません。ObjNew メソッドに問題があるようです。

例えば、F1book1.ObjNew 2,1,4,37,5,ObjID で以前動作していたものが、V5.0J でエラーとなるのは「引数に30以上」が指定されている為です。

開発元からは「30以上の場合にエラーが発生する」と報告がありますが、セルフォントサイズによってその数値は変わるようです。

この例では、V4.0J のデフォルトフォントサイズは 10P、V5.0J では 11P である為にエラーとなっていて、V5.0J で 10P を指定すれば回避できます。

このように、今のところセルフォントサイズで調整する事で対応してください。

(2003/05/29)

V4.0J で保存したシートは、V5.0J でそのまま使用できますか?
可能ですが、現在確認している不具合点に対して、次の対応が必要です。これらは、V4.0J での潜在バグのようです。

V4.0J で保存したシートを V5.0J で読込み使用した際に、

(1) ページヘッダやフッタに直接 2 バイトコードを指定すると、文字化けします。また、漢字シート名を &A で、午前/午後書式の &T でも同じく文字化けします。
対応) そのシートのデフォルトフォントを EXE デザイナ/OCX で更新する。シートを開き、書式|デフォルトフォントダイアログで日本語フォント (MS Pゴシックなど) を選択後 [OK] し、保存する。

(2) 2 バイト文字列が入力されていたセルが、文字化けします。EXE デザイナの、表示|ツールメニュー|書式設定 ON で表示するフォント名に『MS Pゴシック(欧文)』といった「欧文」が表示されます。また、書式|セル|フォントタブでのスクリプトは「日本語」となっており矛盾しています。実際「欧文」でシートは保存されていて、これが原因で文字化けが発生しているのです。

対応) セルフォントを EXE デザイナ/OCX で更新する。シートを開きセルを選択。書式|セル|フォントタブで適切なフォント種類とサイズ、日本語スクリプトを指定し [OK] 。シートを保存する。

(2003/05/29)

Draw メソッドの座標 (左隅上/幅/高さ) 単位は何でしょうか?データ型は Long となっています。
Twip です。

(2003/05/29)

Ver5.0J で、ウィンドウ枠解除メニューが選択できないようですが。「ウィンドウ枠固定」が灰色のままです。
これは Ver5.0J デザイナ (Vcf1.exe) のバグです。Ver4.0J での解除メニューは表示されます。また、Ver5.0J OCX からの WorkbookDesigner では、正しく「ウィンドウ枠解除」メニューが表示されるようです。

デザイナでのウィンドウ枠解除は、固定にしたセル以外を選択し、表示されている「ウィンドウ枠固定」メニューを選択すると、現在の固定が解除されます。

(2003/05/29)

ウィンドウ枠を固定したいのですが、操作がわかりません。
Ver4.0J と Ver5.0J では、操作方法・メニュー場所が異なります。

次のそれぞれのヘルプを参照してください。

【Ver4.0J】行と列の固定
【Ver5.0J】ウィンドウ枠固定

(2003/05/29)

Ver5.0J で、編集バーを表示した状態でシートを保護している場合、編集バーをクリックすると警告ダイアログ (ロックされたセルは編集できません) を表示しますが、その [OK] が選択できません。
これは Ver5.0J でのバグです。Ver4.0J では問題は発生しません。[OK] ボタンが選択できないだけでなく、Formula One 自身、何も受け付けなくなりますので強制終了させるしかありません。こまめにシートを保存しておく必要があるでしょう。

(2003/05/29)

Ver4.0J と Ver5.0J で TAB 形式ファイルが、途中までしか読込めない事が有ります。読込み終了時にはエラーにはなりませんが、実際シートの最後をみると、途中までしか読込めていません。漢字だと、最後文字が文字化けしている事も有ります。
これはバグです。現在では、読込めるレコード数でファイルを分割し、読込むしか対応はありません。

この現象は、漢字が含まれないデータ (例えば、4231 行 × 255 列 計 10MB 相当) ファイルでは正しく読み込めます。

(2003/05/29)

MDIフォームの子フォームに配置したシートで、例えば、ロックしたセルに値を入力すると「ロックされたセルは変更できません」といった警告ダイアログが表示されますが、この[OK]ボタンを押すとフォーカスが Formula One コントロール上から無くなっているようです。再度、マウスなどで Formula One コントロールを選択しなくてはいけくなりますが、なぜでしょう。
このような現象はMDIで作成したもののみ発生し、SDIで作成したフォームでは発生しません。これは、Formula One の仕様のようです。警告ダイアログは内部に固定な仕様なので、制御は不可能です。残念ですがプログラミングでの回避策はないようなので、再度選択する操作で対応して下さい。

(2003/05/29)

Formula One v5.0 で、用紙サイズや向きの設定はどのようにして行うのでしょうか?
[ファイル|印刷] ダイアログにある [プロパティ] ボタンより設定できます。ここで設定した「用紙サイズや向き」は、次の方法でシートに保存できます。

[プロパティ] ダイアログの [OK] ボタンで [印刷] ダイアログへ戻り、[OK] で印刷を実行する。

同じく [印刷] ダイアログへ戻り、[印刷プレビュー] でプレビュー画面を表示。その画面の [印刷] あるいは、[閉じる] または [×] ボタンで先に進む。印刷したくない場合は、後者の方法で閉じると良いでしょう。

なお、[プロパティ] 設定を一度も行わないシートの「用紙サイズや向き」は、通常使うプリンタの設定内容に従います。

(2003/05/29)

Formula One v5.x と 4.x では Wingdings フォントが違っています。
Ver 5 では、Symbol Char Set がデフォルトではありません。 SetFontEx を使用して F1SymbolCharSet を指定する必要があります。

以下にサンプルコードを示します。

F1Book1.SetActiveCell 1, 2
F1Book1.SetFontEx "Wingdings", F1SymbolCharSet, 12, True, False, False,
False, 16000000, False, False
F1Book1.Text = Chr$(252)

(2003/05/29)

BookView とともに ODBC メソッドを使えますか?
使用できます。ODBC メソッドは BookView を使っても機能しますが、ダイアログの表示は行いません。

(2003/05/29)

Excel と Formula One の間で複数行のデータを含むセルのコピーを行うと、セル内の各行が別々のセルに表示されてしまいます。
Excel からコピーしたテキストをクリップボードビューアで表示した場合、各セルの内容はダブルクォーテーションで区切られています。一方、Formula One からコピーしたテキストにはダブルクォーテーションがありません。これが問題を発生させています。

(2003/05/29)

[ファイル名を付けて保存] ダイアログの [ファイルの種類] に表示される拡張子を .XLS に変更するにはどうすればいいですか?常にデフォルトである .VTS になります。
Ver 5 では、SaveFileDlgEx を使用することができます。

以下にサンプルコードを示します。

Dim fInfo As New F1FileSpec
fInfo.type = 4
F1Book1.SaveFileDlgEx "", fInfo
F1Book1.WriteEx fInfo.Name, fInfo.Type

(2003/05/29)

Formula One からリンクしていない First Impression にデータを送るにはどうすればいいですか?
次のコード例を参照してください。

Dim copyArray(1 To 5, 1 To 5) As Variant
F1Book1.CopyDataToArray 1, 1, 1, 5, 5, False, copyArray
VtChart1.DataGrid.RowCount = 5
VtChart1.DataGrid.ColumnCount = 5
VtChart1.CopyDataFromArray 1, 1, 5, 5, copyArray)

(2003/05/29)

日付が月毎に加算するワークシート式はどのように書くのですか?
セル A1 に開始日付を入力し、セル A2 に次の数式を入力してください。

以下にサンプルコードを示します。

=DATE(YEAR(A1),MONTH(A1)+1,1)

(2003/05/29)

Web ページでは ODBCConnectEx をどのように使用するのですか?
VB Script は、Variant 型以外のデータ型を受け付けません。ゆえに、ヘルプファイルに記載されている例はデータ型の不一致エラーが発生します。正確なコードを以下に示します。

Sub mybutton_onclick()
dim pConnect
set pConnect = CreateObject("VCF15.F1ODBCConnect")
pConnect.ConnectStr = "DSN=southcreek"
F1Book1.ODBCConnectEx pConnect, True
end sub

しかし、このコードはIEの iObjectSafety を無効にするまで実行されません。無効にする方法についてはマイクロソフト社に問い合わせてください。

(2003/05/29)

Formula One の ODBCConnect と ODBCQuery を使ってパラメータ化したクエリを使用したいのですが、クエリが実行されません。
Formula One ではパラメータ化したクエリをサポートしていません。クエリを構築する前に、コード内でパラメータを解析する必要があります。

(2003/05/29)

式中でシート名を使用している式をシートの並び順が異なる別のワークブックにコピーすると、式中のシート名がコピー元のワークブックと同じ位置にあるコピー先のワークブックのシート名に変わります。
2 番目 (コピー先) のワークブックに、最初 (コピー元) のワークブックと同じ数のシートを挿入してください。

(2003/05/29)

Formula One は RT03 という名前定義は受け付けるのに、何故 HC03 は受け付けないのですか?
Formula One は、セル参照とも解釈できる名前定義は受け付けません。有効なセル参照は、A1 から IV16384 までです。

(2003/05/29)

セルを編集しているときに初めてキーを押すと KeyPress と KeyDown イベントが発生するが、その後発生しないのはなぜですか?
Formula One はセルのエディットウィンドウを使用します。最初のキーを押したとき Formula One のイベントが発生し、セルのエディットウィンドウも同時に開きます。セル内で押したキーは Formula One にではなくエディットウィンドウに対して適用されますが、エディットウィンドウはこれらイベントを持ちません。VB では、VB の KeyPreview プロパティを True に設定し、フォームの KeyDown イベントですべてのキー操作を検出することで、どのキーもトラップすることが可能になります。

(2003/05/29)

最初の行が非表示で、リストボックスがスプレッドシート上にある場合、下にスクロールしてから上にスクロールすると行が 2 つになります。
オブジェクトが表示されており、行が非表示の場合にのみ発生する現象です。行を非表示にせず、0.01 (非表示とはほとんど区別がつかない) に高さを設定した場合は正常に動作します。

(2003/05/29)

非表示の行/列を含む範囲を選択し、新しい高さ/幅を選択すると、非表示の行/列が表示されてしまいます。
Formula One は行/列の高さ/幅をゼロ (0) に設定することで、これを非表示にしています。範囲を選択して新しい高さ/幅を設定すると、この行/列は変更されます。高さ/幅を変更した後に、再度その行/列を非表示に設定し直す必要があります。

(2003/05/29)

戻り値がゼロのとき、表示しない数式はどのように作成するのですか?
各シートで ShowZeroValues プロパティに false を設定してください。

(2003/05/29)

列の幅をテキストに合わせて自動的にサイズを変更することができますか?
SetColWidthAuto メソッドは列の幅を自動的に設定します。

(2003/05/29)

Read および ReadEx メソッドが iObjectSafety のため動作しないならばどのように MS のインターネットエクスプローラで Web ページ上の Formula One にファイルを読み込ませるのでしょうか?
Formula One の URL プロパティを使用してください。そこから、ファイルを指定します。

以下にサンプルコードを示します。

myF1.URL = http://www.yoursite.com/yrwks.vts

(2003/05/29)

SetProtection メソッドの bHidden フラグの意味はなんですか?
bHidden フラグが True の場合、式は表示されません (式の結果は表示されます) 。

(2003/05/29)

ピクチャボックスから取得した Formula One のピクチャを削除すると、ピクチャボックスのピクチャが消えてしまいます。
Formula One でピクチャを表示するとき、ピクチャボックスが削除される場合にはピクチャのメモリを制御する必要があります。したがって、Formula One でオブジェクトを削除するときは、ピクチャのメモリも削除され、ピクチャボックスもピクチャを失います。回避策としては、ピクチャのコピーをどこかフォーム上に作成するかイメージをリロードしてください。

(2003/05/29)

隣接した列を非表示にしたときオブジェクトも消えてしまうのはどうしてですか?
ALT キーを押しながらオブジェクトを引き伸ばすと、オブジェクトの端は隣接する列と境界を共有します。そのため、オブジェクトの座標が次の列の座標に含まれることになります。この列を非表示にすると、オブジェクトの座標はその列の座標内にある訳ですから、オブジェクトも表示されなくなる、ということです。

この問題を解決するには、オブジェクトをセルより少し小さくしてください。

(2003/05/29)

EditClear を使用して前のピクチャを削除した後、ObjNewPicture を使用して新しいピクチャを挿入すると、"引数が不正です" が返ります。
ObjNewPicture に渡したハンドルは、EditClear を使用したときに解放されたハンドルです。ピクチャボックス内のメタファイルを再ロードして、ハンドルを更新してください。

(2003/05/29)

ワークシート関数には、引数に String を持つものがあります。このような関数を Formula プロパティで使用すると、文字列がネストしてしまいます。ネストした文字列はどのように指定すればいいですか?
VB では、"" (ダブルクォーテーション&ダブルクォーテーション) 文法を使用します。

PB では、~" (チルダ&ダブルクォーテーション) 文法を使用します。

F1Book1.Formula = "TEXT(123.62, ""0.000"")"
ole_1.object.Formula = "TEXT(123.62, ~"0.000~")"

(2003/05/29)

Power++ でのエラートラップはどのように処理すればいいでしょうか?
OCX にアクセスする前に次のコードを追加すると、メッセージが無効になります。

以下にサンプルコードを示します。

WOleApplicationObject *appObject =
WOleApplicationObject::GetOleApplicationObject( );

// P++内での Automation Exception Messages を無効
appObject->SetShowAutomationErrors( FALSE );

// Do stuff....

// Test for error condition


// P++内で Automation Exception Messages を有効
appObject->SetShowAutomationErrors( TRUE );

(2003/05/29)

Formula One ではなぜ 15 桁までしか表示されないのですか?
Formula One で採用している浮動小数点形式で表現できるのは、15 桁までです。これは、Excel が使用している形式と同じであり、MS Excel (v4、5、95 および 97) は 15 桁の同じ制限があります。

(2003/05/29)

OpenFileDlg メソッドは Window へのハンドルを必要とします。Delphi の場合は何が必要ですか?
Form.Handle を渡します。

(2003/05/29)

ある列から別の列へデータをドラッグしてドロップするとき、ドロップ先の列にデータが入力されているかどうかを知ることはできますか?
AllowMoveRange を False にします。列を選択したら EditCut を実行します。MouseMove イベントで、マウスの位置を調べ、TwipsToRC を使って現在マウスが位置する列を求めます。LastRow (空白ではない下端の行の番号を取得します) を取得し、その行までにデータが入力されているかを調べます。入力されていなければ、EditPaste を実行します。

(2003/05/29)

Formula One の EditClear と EditDelete メソッドの違いはなんですか?
EditClear は、セルに入力されている内容をクリアしますが、セル自身は残ります。EditDelete はセル全体を削除し、他のセルからのデータを削除された領域にシフトさせます。

(2003/05/29)

スプレッドシートで使用する新しいワークシート関数を作成することはできますか?
Formula One ではワークシートで使用するカスタム関数の作成を許可していませんが、バージョン 5.0 からは DLL にある関数を CALL および Redister.ID 関数で呼び出すことを許可しています。

MulDiv 関数の例を示します。この関数は、はじめの 2 つのパラメータを掛け合わせ、その結果を 3 つめのパラメータで割った値を返します。

=CALL("Kernel32","MulDiv","JJJJ",10,10,5) 'セルに何を入力しても20が返される

=REGISTER.ID("Kernel32","MulDiv","JJJJ") '他のセルから呼び出せます
=CALL(A2,10,10,5)

(2003/05/29)

CopyDataFromArray メソッドを使用したときに “文字列が長すぎます、エラー20025” というメッセージが返されるのはどうしてですか?
Formula One のセルは、255 文字まで入力可能です。この配列の要素が制限を超えていないか確認してください。

(2003/05/28)

GetPrintScale と SetPrintScale メソッドはどのように使うのですか?
次のコード例を参照してください。

Dim pscale As Integer
Dim fittopage As Boolean
Dim vpage As Long
Dim hpage As Long

'このコードは現在の Printscale の設定を取得および表示する
F1Book1.GetPrintScale pscale, fittopage, vpage, hpage
MsgBox pscale & fittopage & vpage & hpage

'このコードは PrintScale にページのフルサイズを設定する
F1Book1.SetPrintScale 400, True, 1, 1

'このコードは、新しい設定を取得および表示する
F1Book1.GetPrintScale pscale, fittopage, vpage, hpage
MsgBox pscale & fittopage & vpage & hpage

(2003/05/28)

1 つのワークブックに複数の .vts ファイルを挿入し、それらを異なるタブに表示することはできますか?
できません。.vts ファイルを読み込むたびに前のワークブックは消され、新しいワークブックが作成されます。 1 つの .vts ファイルを読み込み、別々のコントロールでロードされている他の .vts ファイルから EditCopy および EditPaste を実行することしかできません。

(2003/05/28)

ODBCConnect を呼び出すと SQL エラーが返されます。
これは通常、pConnect 文字列が不正であるというサインです。最も簡単にデバッグするには、pConnect にヌルを設定してください。次に、ODBCQuery メソッドの bForceShowDlg に True を設定してメソッドを呼び出し、[ODBC クエリ] ダイアログを表示します。このダイアログには、使用すべき正しい接続文字列が示されます。

(2003/05/28)

データベースでストアド SQL プロシージャを使用して Formula One にデータを取り込むのに、ODBCPrepare および ODBCExecute メソッドを使用できますか?
できません。ODBCPrepare および ODBCExecute はレコードの取得を目的に設計されていません。ODBCQuery は唯一、データの取得を目的として最適化されているメソッドです。ただし、このメソッドからはストアドプロシージャを実行できません。

(2003/05/28)

Delphi 3.0 で CancelEdit、EndEdit、StartEdit、Modified プロパティ/メソッドがなぜ動作しないのですか?
重複する名前が存在するので、Delphi 3.0 ではこれらプロパティ/メソッドの名前に接頭辞 _DVCF1_ を追加します。

_DVCF1_CancelEdit
_DVCF1_EndEdit
_DVCF1_StartEdit
_DVCF1_Modified
*Ver5 では IF1Book_ となります。いずれにせよ、OCX をコンパイルしたユニットファイルを参照する必要が有りそうです。

(2003/05/28)

Excel のファイルとして保存すると、Excel でそのファイルを開くことができません。
ロードされていないシートのセルを参照しないでください。

例えば、Formula One で保存する前にシート上や [名前の定義] の #ref を削除する必要があります。

(2003/05/28)

Delphi 2.0 では Boolean 型を OLE2.DCU に定義されている type TOleBool で宣言しましたが、Delphi 3.0 には OLE2.DCU も TOleBool データ型もありません。
Delphi 3 では現在 WordBool データ型を使用します。type TOleBool で宣言されている変数はすべて type WordBool と宣言し直す必要があります。

(2003/05/28)

タブコントロールの各タブに Formula One コントロールが 1 つずつ配置してある場合、タブを切り替える度にシートにフォーカスを設定するにはどうすればいいですか?
Tab コントロールの GotFocus イベントで、Tab1.Tab プロパティの値を調べ、SetFocus を使用してそのタブ上の F1Book オブジェクトにフォーカスを設定してください。

(2003/05/28)

PowerBuilder でインデックスと式を持つメソッドはどのように使用するのですか?
NumberRC のようなインデックスを持つプロパティとメソッドは、通常式にイコールで設定します。

以下にサンプルコードを示します。

F1book1.NumberRC(1,1) = 7
PowerBuilder では、カッコ内にすべての引数を含む必要があります。

ole_1.object.NumberRC(1,1,7)
しかし、V5.0.3 および 6.0 の構文では以下のようになります。

ole_1.object.NumberRC[1,1] = 7

(2003/05/28)

Formula One 4.x と 5.x は、同じマシン上で共存できますか?
現在再調査中です。

(2003/05/28)

Visual Components の OCX コントロールは Access で動作しますか? どの環境でサポートされていますか?
VisualComponets の OCX コントロールは、Access ではサポートされていません。

サポートされている環境は、PowerBuilder、Power++、Visual Basic、Visual C++、Delphi、C++ Builder です。

(2003/05/28)

HTML 形式に書き出すとき、列幅の情報も書き出されますか?
書き出された HTML ファイルの &lt;TABLE&gt; タグに手作業で WIDTH 属性を追加してください。

(2003/05/28)

Draw メソッドを使ってヘッダおよびフッタを印刷するにはどうすればいいですか?
Draw メソッドは、シートのみを印刷するものであり、ヘッダやフッタの印刷はしません。ヘッダとフッタを印刷するには、Draw メソッドを呼び出す前にプリンタにテキストを送り手作業でそれらを印刷する必要があります。

(2003/05/28)

Delphi ではメタファイルを正しく処理できません。
Delphi では、すべてのメタファイルを Formula One でサポートしていないメタファイルに拡張するため扱えません。

(2003/05/28)

Internet Explorer 3.0 で formula One を ActiveX コントロールとして使用できますか?
Formula One および First Impression のバージョン 5.x からは、インターネットエクスプローラ 3.02 以降で使用することができます。

(2003/05/28)

Delphi 3.0 では、参照渡しする新しいオブジェクトをどのように作成するのですか?
Delphi 3.0 のコード例を次に示します。

procedure TForm1.BitBtn1Click(Sender: TObject);
var
pConnect: IF1ODBCConnect;
pQuery: IF1ODBCQuery;
begin
pConnect := coF1ODBCConnect.Create;
pConnect.ConnectStr := '';
f1book1.odbcConnectEx(pConnect, True);
pQuery := CoF1ODBCQuery.Create;
F1Book1.ODBCQueryEx(pQuery, 1, 1, true);

end;

(2003/05/28)

特定の範囲に PrintArea プロパティを設定した後、シートを設定する前の状態に戻すにはどうすればいいですか?
Print_Area の定義名を削除してください。

以下にサンプルコードを示します。

F1Book1.DeleteDefinedName "Print_Area"

(2003/05/28)

データベースからデータを取得および返すには、ODBCメソッドをどのように使うのですか?
Formula One にデータを取り込むには、ODBCConnect() および ODBCQuery() の2つのメソッドを呼び出します。

ODBCConnect() には 3 つの引数があります。
1) String 型 DSN の参照渡しの変数を指定します。空文字列を指定すると、データソースの選択を要求するダイアログが表示されます。
2) boolean 型 エラーを表示するかどうかを設定します。
3) Integer 型 返されるコードを格納する参照渡しの変数を指定します。

ODBCQuery() 関数には 9 つの引数があります。
1) string 型 引き渡すSQL ステートメント。
2) long 型 開始行を指定します。
3) long 型 開始列を指定します。
4) boolean 型 [ODBC クエリ] ダイアログを表示するかどうかを指定します。
5) boolean 型 列見出しをデータベースのフィールド名に置き換えるかどうかを指定します。
6) boolean 型 ワークシートにデータを入力するとき日付、時間、通貨フィールドが自動的に書式設定されるかどうかを指定します。
7) boolean 型 列内の最も長いデータに合わせて列の幅を自動的に設定するかどうかを指定します。
8) boolean 型 ワークシートの行と列の最大数をクエリによって返されたレコード数とフィールドに合わせて設定するかどうかを指定します。
9) integer 型 返されるコードを格納します。

Formula One からデータベースを更新するには、ODBCPrepare()、ODBCBindParameter()、 および ODBCExecute() の 3 つの関数が必要です。

ODBCPrepare() は 2 つ引数が必要です。
1) SQL update statement
2) integer 型 返されるコードを格納する参照渡しの変数を指定します。

ODBCBindParameter() には 4 つの引数があります。
1) バインドする列の、SQL ステートメントでのパラメータ位置 (番号) を指定します。
2) バインドする列の、テーブルでの列位置 (番号) を指定します。
3) integer 型 列のデータ型を指定します。0 から 6 までの 7 つのデータ型があります。
4) integer 型 返されるコード参照を指定します。

ODBCExecute() には 3 つの引数があります。
1) long 型 更新する開始行を指定します。
2) long 型 更新する終了行を指定します。
3) integer 型 返されるコードを格納する参照渡しの変数を指定します。

Powersoft のデモデータベース V5 から取得したサンプルを次に示します。

//ウィンドウにOCXを最初に配置する必要があります。

String pConnect,pQuery
Integer pRetCode
long nRow,nCol
Boolean pSetColNames,pSetColFormats,pSetColWidths,pSetMaxRC

pSetColNames = true
pSetColFormats = true
pSetColWidths = true
pSetMaxRC = false

pConnect = "DSN=Powersoft Demo DB V5" //空文字列を渡す場合、
// [データソースの選択] ウィンドウによって選択が要求されます。

ole_1.object.ODBCConnect(ref pConnect, True, ref pRetCode)
nRow = 1
nCol = 1
pQuery = "select * from department" //空文字列を渡すと、
// SELECTステートメントを入力するため [クエリ] ウィンドウが表示されます。

ole_1.object.ODBCQuery(REF pQuery, nRow, nCol, false, REF pSetColNames,REF &
pSetColFormats,REF pSetColWidths,REF pSetMaxRC,ref pRetCode)

//第4引数(この場合’false’)は、[ODBC クエリ]ダイアログの表示を
//強制するかどうかを指定します。
PowerSoft のデモデータベース V5 の部署 (Department) テーブルを更新するコード例をここに示します。

int F1CDataChar, F1CDataLong, pRetCode
long ll_row_begin,ll_row_end

ll_row_begin = 1
ll_row_end = 5

//データ型を識別するのにFormula Oneが使用する数値を示します。
F1CDATACHAR = 0
//F1CDATADouble = 1
//F1CDATAdate = 2
//F1CDATAtime = 3
//F1CDATAtimestamp = 4
//F1CDATAboolean = 5
F1CDATAlong = 6

ole_1.object.ODBCPrepare("UPDATE department SET dept_name=? & 
where dept_ID=?", & ref pRetCCode)
ole_1.object.ODBCBindParameter(1, 2, F1CDataChar,ref pRetCode)
//1では、ODBCPrepareの行のdept_nameを参照
// 2では、dept_nameがあるテーブル(2つ目の列)にあるorderを参照
ole_1.object.ODBCBindParameter(2, 1, F1CDataLong,ref pRetCode)
ole_1.object.ODBCExecute(ll_row_begin,ll_row_end,ref pRetCode)

(2003/05/28)

Write メソッドで、FileType に「F1FileFormulaOne」を指定して保存したら、そのファイルを開くことができなくなりました。
Ver4.0 以降は「F1FileFormulaOne3」を指定してください。

(2003/05/28)

ページ範囲指定を行なった印刷を実行すると、結果が指定したページとは異なる内容で印刷されましたが..。
この現象は、開発元でも確認しているバグです。2~3ページを指定しても、1ページ目から出力してしまいます。残念ながら、回避策はありません。

(2003/05/28)

ページヘッダやフッタに改行を挿入し、複数行の設定を行なうと、プレビュー画面と印刷結果に「・(中点)」が出力されるようですが..。
この現象は、開発元でも確認しているバグです。しかし、プレビュー画面で「・」が出力されるのは、Excel 同様、仕様です。

印刷結果に対しての回避策は、現在のところありません。レイアウトの変更でカバーしてください。

(2003/05/28)

ページヘッダやフッタに、直接2バイト文字を設定してプレビューや印刷をすると、正しく出力されません。例えば、「ページヘッダ」という文字列を設定すると、「メヤヤ」といった具合です。
このバージョンでのページヘッダやフッタは、直接の2バイト文字はサポートされていない為、文字化けが発生してしまいます。

しかし、2バイト文字を設定したシート名を"&A"で指定した場合は正しく出力されますので、活用してみてください。

(2003/05/28)

Excel 95 で作成した XLS ファイルを読み込み、セルの値などを変更してから「Excel 5 or 7 形式」を指定して、同じファイル名で保存しました。
しかし、その XLS ファイルが、Excel 95 で読めなくなりました。
保存方法に誤りはないと思います。当初、Excel 95 で作成した XLS ファイルにマクロやモジュールシートが含まれていませんでしたか?

Formula One で保存の際に保証するのは、ワークシートのみです。

マクロやモジュールシートが含まれていても、開く際は無視する為問題はありませんが、この状態で保存した場合、どんな影響があるか全く予測できません。運よく Excel で読めたとしても、マクロやモジュールシートそのものは存在しませんのでご注意ください。

Formula One で保存し直す場合は、最初からワークシート以外は削除しておく事をお勧めします。

(2003/05/28)

Excel 97 で作成した XLS ファイルを開くと「ファイルを開けません」というメッセージが出て、開くことができません。Excel 97 とは互換性がないという事なのでしょうか?
Excel 97 は、以前とは異なったファイル形式となっているようです。

今のところ、この Excel 97 ファイル形式についてはサポートしていません。

Excel 97 で作成する際は、ファイル種類を「Excel 5/95 ブック」に指定して保存するようにしてください。

(2003/05/28)

Vcf1.exe デザイナで、Excel 95 で作成した XLS ファイルを「Excel 5 or 7 形式」で開いた後、『上書き保存』したファイルが、Excel 95 で読めなくなりました。
デザイナでは、何も編集していません。
このバージョンでの『上書き保存』は、常に「Formula One ファイル形式」で保存してしまう為、ファイル名は xxx.XLS のままでも、Excel では読めない形式となってしまっています。

このような場合は『名前を付けて保存』を選択し、ファイルの種類を指定して保存するようにしてください。

(2003/05/28)

標準書式のセルに「1a」や「1A」、「2p」や「2P」と入力すると、「1:00午前」「2:00午後」のような時刻書式で表示されてしまいます。
この現象は、開発元でも確認しているバグです。

先頭にアポストロフィを付けて入力することで回避してください。例えば「'1a」や「'2P」といった具合です。

(2003/05/28)

前ゼロ付きの数字 (例えば"001") を入力したら、"1" と表示されました。
前ゼロ付きのままの文字列で表示・格納したいのですが、Excel にあるような「文字列」という書式設定が見当たりません。
残念ながら「文字列」という書式設定はありません。

入力時に先頭にアポストロフィ(')を付けると、文字列として格納されます。あるいは、あらかじめ桁数がわかっていれば書式設定で「000」といった具合に必要桁数分の登録をしておき、その書式を設定しておくと良いでしょう。この場合は、数値で格納されています。

(2003/05/28)

Win3.1 の Excel 5 で作成したワークブックを読込むと、セルが文字化けしてしてしまいます。明朝やゴシックフォントを設定しているセルが、文字化けするようです。
Win95 では「明朝」や「ゴシック」フォントが存在しない為、読込んだ時に「Algerian」などの英数フォントが設定されているはずです。
2 バイト文字をサポートしている「MS 明朝」や「MS ゴシック」に変更してご使用ください。

(2003/05/28)

バージョン情報ダイアログに於いて、使用者に 2 バイト文字 (=漢字) を使用していると、文字が化けて表示されます。Aboutbox メソッドを使用しても、同じでした。
残念ながら、OCX で使用するバージョン情報ダイアログはリソースに含まれていない為、英語版のままとなっています。したがって、2 バイト文字の場合は文字化けして表示されてしまいます。

VcF1.exe のバージョン情報ダイアログは、表示形式が異なるのでそのようなことはありません。

(2003/05/28)

質問一覧に戻る