問題タブ [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.
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として報告しました。
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 に設定すると、フィールドのリストが表示されると思いましたが、そのような運はありませんでした。パラメータの値が必要です。
アイデアがあれば、ぜひお聞きしたいです。助けてくれてありがとう。
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 のソリューションを使用し、テーブル構造があまり変わらないことを願っています。
sql-server - DBX を使用してプログラムでデータベースを作成することは可能ですか?
TSQLConnection は既存のデータベースにのみ接続するように見えますが、データベース サーバーにコマンドを送信できる別のコンポーネントが見つかりませんでした。
私は Firebird と MSSQL で Delphi 2009 を使用しています。
アイデアの 1 つは、システム データベース (たとえば、MSSQL の master または tempdb) に接続し、作成コマンドをサーバーに送信することでした。これは MSSQL のオプションになる可能性がありますが、Firebird についてはわかりません。
Delphi 2009 の新しい DBX メタデータも認識していますが、それを使用してデータベースを作成する方法が見つかりませんでした。私が見つけたすべての例は、既存のデータベースを変更することです。
delphi - DelphiでDBExpressを使用してデータベースを作成しますか?
DBExpressを使用してプログラムでFirebirdデータベースを作成する必要があります。SQLサーバーでこれを行ったのは、最初にマスターに接続してから、作成用のスクリプトをクエリに渡すことですが、Firebirdでは鶏が先か卵が先かという問題が少しあります。
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をロードできません)は適切ではない可能性があります。
multithreading - DbExpress クエリのスレッド化
DbExpress コンポーネントを使用して Delphi で「GUI」データベース アクセスしか実行したことがありませんが、バックグラウンドで 1 つのクエリを実行したいと考えています。その TSQLConnection がスレッドセーフではない場所をいくつか読んだので、スレッドごとに新しい接続を作成する必要があります。TSQLConnection に CloneConnection があることがわかりますが、新しい接続は元の接続によって所有されていると主張しています。
そう、
1)スレッド化されたデータモジュールにあるTSQLQueryを実行する適切な方法は何ですか?
2) TSQLConnection.CloneConnection を使用できますか? 複製された接続を解放するか、スレッドが終了したときにそのままにしておく必要がありますか?
簡単なサンプル コード (または URL) は非常に役立ちます。
delphi - BlackFishでDBx4の整数自動インクリメントフィールドを使用するにはどうすればよいですか?
ブラックフィッシュデータベースでdbx4の自動インクリメンタルフィールドを使用しようとしています。単純なテーブル構造があります。
開く前に私はやっています:
開封後:
私が行った場合:
または、これをDBGRIDで使用すると、次のエラーで失敗します。
「フィールド'ID'には値が必要です」</p>
魔女が生成されているはずです。
INSERTクエリを実行すると、「AutoGenerateValue:= arAutoInc」行の有無にかかわらず、正常に機能します。
どうすればこの問題を克服できますか?
oracle - dbExpressを使用してSYSDBAとしてOracleデータベースに接続するにはどうすればよいですか?
Oracleデータベースに接続するDelphiアプリケーションがあります。
SYSDBAとしてログインしようとすると、次のエラーが発生します。
「SYSASSYSDBA」のユーザーでログインしようとすると、次のエラーが発生します。
dbExpress接続を使用してsysdbaとしてログインするにはどうすればよいですか?