問題タブ [dbexpress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1819 参照

delphi - Windows 2003 での Delphi 2009 および Informix dbExpress

dbExpress を使用して Informix データベースに接続する単純なアプリケーションがあります。TurboDelphi でコンパイルすると、WinXP と Win2003 の両方で動作します。

新しい Deplhi 2009 を使用すると、アプリは WinXP では問題なく動作しますが、Win2003 では起動しません。エラーのある MessageBox はありません。EventLog の情報のみ:

障害のあるアプリケーション inf_dbexpress_test.exe、バージョン 0.0.0.0、障害のあるモジュール kernel32.dll、バージョン 5.2.3790.4062、障害アドレス 0x0000bee7。

これはdbExpressドライバーの問題だと思いますが、ODBCを使用してInformixに接続するDelhi 2009でコンパイルされた他のアプリはWin2003で動作します。

Delphi 2009 の Informix dbExpress ドライバが Windows 2003 で動作するかどうか、誰でもテストできますか?


ご協力いただきありがとうございますが、うまくいきません。

に関しては$INFORMIXDIR:ClientSDK 3.5を再インストールしました$INFORMIXDIRが、現在は次のとおりです。

c:\informix

(c:\Program Files ... でした)。

ODBC を使用するアプリから DB に接続できます。ただし、WinXP 互換モードでも dbExpress アプリを起動できません。


Delphi Quality Central でバグ #67823として報告しました。

0 投票する
6 に答える
4978 参照

delphi - DBExpress TSQLQuery からのフィールド リストの取得

プログラムのユーザーが実行時に定義したクエリからフィールドのリストを取得する際に問題があります。ユーザーが SQL クエリをメモ コントロールに入力できるようにしてから、返されるフィールドを通過させ、出力の書式設定、列の値の合計などを実行させたいと考えています。そのため、列名を取得して、追加情報を入力する場所を確保する必要があります。

パラメーターがなくても問題ありませんが、クエリのフィルター パラメーターを定義させる必要もあります。したがって、パラメーターを null に設定したい場合は、パラメーターのデータ型が何であるかを知る必要があります。

Delphi 2006 を使用しています。DBExpress コンポーネントの TSQLConnection と TSQLQuery を使用して、Firebird 2.1 データベースに接続しています。以前は、次を使用して成功していました。

for i := 0 to Qry.Params.Count - 1 do Qry.Params[i].value := varNull;

日付パラメーターを使用しようとしたときに問題があることがわかりました。それまでのパラメータはすべて整数(レコード ID)だったのは偶然でした。varNull は値が 1 の列挙定数にすぎないことが判明したため、許容できる結果 (レコードなし) が正常に機能していました。

フィールドのリストだけが必要です。おそらく、SQL ステートメントの SELECT 句を解析する必要があります。Qry.Prepared を True に設定すると、フィールドのリストが表示されると思いましたが、そのような運はありませんでした。パラメータの値が必要です。

アイデアがあれば、ぜひお聞きしたいです。助けてくれてありがとう。

0 投票する
2 に答える
4609 参照

sql - Delphi DBExpress/Firebird のパラメータ化されたクエリでの文字列切り捨てエラー

DBExpress TSQLQuery を使用して、Delphi で次のようなクエリを実行しています。

それを実行すると、 open コマンドを実行すると、次の例外が発生します

クラス TDBXError でメッセージ「算術例外、数値オーバーフロー、または文字列の切り捨て」が発生しました。

これは、AMYFIELD の文字列がテーブル フィールドの長さよりも長いことが原因です。MYFIELD は Varchar(10) です。短い文字列にトリミングすると問題なく動作し、その文字列を直接 SQL に追加すると、

つまり、切り捨てについて不平を言うことはありません。これが挿入/更新である場合、切り捨てについて知りたいのですが、検索に使用されたばかりなので、停止したいと思います。

文字列を切り捨ててもよいことを DBExpress に伝える方法はありますか? または、これに対して実行可能な回避策がありますか

次のようなものを追加する必要は避けたい

l_input := copy(l_input,0,fieldLength-1);

乱雑に見え、コードの保守が難しくなります。

Delphi 2007 と Firebird 2 をインターベース ドライバ経由で使用していますが、それが役に立ちますか?

アップデート:

@ Erick Sasseそれはあなたの権利のように見えます。firebird の FAQ サイトhttp://www.firebirdfaq.org/faq79/でエラー メッセージを見つけました。

@ inzKulozik ActiveSQL.ParamByName('AMYFIELD').Size を動作させることはできませんが、LeftStr は正常に動作しますが、これはまだ面倒で、維持するのが困難です。

SQL に substr を追加するメソッドも見ました。

理想的には、この問題を修正する Firebird/DBExpress 構成設定が必要ですが、それが見つかるまで inzKulozik のソリューションを使用し、テーブル構造があまり変わらないことを願っています。

0 投票する
6 に答える
2108 参照

sql-server - DBX を使用してプログラムでデータベースを作成することは可能ですか?

TSQLConnection は既存のデータベースにのみ接続するように見えますが、データベース サーバーにコマンドを送信できる別のコンポーネントが見つかりませんでした。

私は Firebird と MSSQL で Delphi 2009 を使用しています。

アイデアの 1 つは、システム データベース (たとえば、MSSQL の master または tempdb) に接続し、作成コマンドをサーバーに送信することでした。これは MSSQL のオプションになる可能性がありますが、Firebird についてはわかりません。

Delphi 2009 の新しい DBX メタデータも認識していますが、それを使用してデータベースを作成する方法が見つかりませんでした。私が見つけたすべての例は、既存のデータベースを変更することです。

0 投票する
2 に答える
5559 参照

delphi - DelphiでDBExpressを使用してデータベースを作成しますか?

DBExpressを使用してプログラムでFirebirdデータベースを作成する必要があります。SQLサーバーでこれを行ったのは、最初にマスターに接続してから、作成用のスクリプトをクエリに渡すことですが、Firebirdでは鶏が先か卵が先かという問題が少しあります。

0 投票する
6 に答える
8719 参照

oracle - Delphi 2009、Oracleを使用したDbExpress:oci.dllをロードできません

datasnap 2009をテストするためのデモをセットアップしましたが、dbexpressに問題があります。

dbexpressエラーメッセージ(設計時または実行時に同じ):「oci.dllライブラリを読み込めません(エラーコード127)。OCI.dllライブラリがシステムパスにない可能性があります。」

Oracle8.0.5を使用しています。oci.dll(c:\ orant \ BIN)へのパスは、システムパスの行の前にあります。Delphi 2005もインストールしましたが、まったく同じ構成で問題なく動作します。dbexpress delphi 2005関連ファイルを移動し、何度も再起動し、同じエラーが発生するたびにoci.dllをc:\ windows \ systemまたはc:\ windows \system32\にコピーしようとしました。

ソリューションが不足しています。多分それは私がD2005もインストールしているという事実に関連した問題です...?

誰かが私を助けてくれますか?

ありがとう

編集: これがイベントログです。ビルド中のIDEで、OCI.dllが見つかり、ロードされていることがわかります。そのため、エラー(oci.dllをロードできません)は適切ではない可能性があります。

0 投票する
1 に答える
2360 参照

multithreading - DbExpress クエリのスレッド化

DbExpress コンポーネントを使用して Delphi で「GUI」データベース アクセスしか実行したことがありませんが、バックグラウンドで 1 つのクエリを実行したいと考えています。その TSQLConnection がスレッドセーフではない場所をいくつか読んだので、スレッドごとに新しい接続を作成する必要があります。TSQLConnection に CloneConnection があることがわかりますが、新しい接続は元の接続によって所有されていると主張しています。

そう、

1)スレッド化されたデータモジュールにあるTSQLQueryを実行する適切な方法は何ですか?

2) TSQLConnection.CloneConnection を使用できますか? 複製された接続を解放するか、スレッドが終了したときにそのままにしておく必要がありますか?

簡単なサンプル コード (または URL) は非常に役立ちます。

0 投票する
1 に答える
2184 参照

delphi - BlackFishでDBx4の整数自動インクリメントフィールドを使用するにはどうすればよいですか?

ブラックフィッシュデータベースでdbx4の自動インクリメンタルフィールドを使用しようとしています。単純なテーブル構造があります。

開く前に私はやっています:

開封後:

私が行った場合:

または、これをDBGRIDで使用すると、次のエラーで失敗します。

「フィールド'ID'には値が必要です」</p>

魔女が生成されているはずです。

INSERTクエリを実行すると、「AutoGenerateValue:= arAutoInc」行の有無にかかわらず、正常に機能します。

どうすればこの問題を克服できますか?

0 投票する
3 に答える
2730 参照

oracle - dbExpressを使用してSYSDBAとしてOracleデータベースに接続するにはどうすればよいですか?

Oracleデータベースに接続するDelphiアプリケーションがあります。

SYSDBAとしてログインしようとすると、次のエラーが発生します。

「SYSASSYSDBA」のユーザーでログインしようとすると、次のエラーが発生します。

dbExpress接続を使用してsysdbaとしてログインするにはどうすればよいですか?

ADOに関するこの関連記事も参照してください