ホーム
Top.Mail.Ru Yandeks.Metrika
フォーラム: "Bases";
現在のアーカイブ:2002.01.08;
ダウンロード:[xml.tar.bz2];

ダウン

SQLに空のクエリパラメータ値が存在できるかどうか 似ている枝を探す


shakh   (2001-12-03 20:29) [0]

良い一日。 データベースがあります(access2000)。 ユーザーインターフェイス(。Exe)があります。 インターフェイスとデータベース間の通信は、ADOおよびSQLクエリを介して行われます。 さまざまなデータベーステーブルに入力するための一連のフォームがあります。 同時に、フォーム上の一部の編集 "は空のままにすることができます。つまり、値を含めないでください。そして、質問は次のとおりです。要求データの一部のフィールドが空の場合、テーブルを追加(更新)する要求をSQL経由で送信することは可能ですか? ???これは主にテキストフィールドに関するものです。
もちろん、「空」のフィールドの値をチェックし、クエリを動的に形成するオプションがありますが、そのようなフィールドの20ピースがある場合、これはやや面倒な構成です。



Котелок   (2001-12-04 07:35) [1]

可能。

たとえば、次のように

テーブルに挿入(column1、column2)値(:col1 、: col2)

そして、必要な編集の値をパラメーターに割り当てるだけです。
編集が空の場合、空のフィールドも挿入されます。



shakh   (2001-12-04 19:31) [2]

アドオン...まあ、良い。 同じAdoQueryコンポーネントが異なるクエリに使用される場合、パラメーターの数は異なる場合があります。 AdoQuery1.SQL.Add( "テーブルに挿入(col1、col2)値" + Edit1.Text + "、" + Edit2.text + ")"); その後、Edit1またはEdit2の値が空の場合、変数のタイプが無効であるか、フィールドにデフォルトパラメータがないというエラーが表示されます;(
大量の静的クエリパラメータをドラッグしたくない



Delirium   (2001-12-04 20:08) [3]

しかし、フィールドがあり、もちろんNullではない場合、「空の」値を渡すことを妨げるものは何ですか?



Котелок   (2001-12-05 00:46) [4]

編集に行が必要な場合は、このようにしてみてください...

AdoQuery1.SQL.Add( "テーブルに挿入(col1、col2)値" + "" "" + Edit1.Text + "" "" + "、" + "" "" + Edit2.text + "" "" + ") ");
これが文字列であることを明示的に示します。
parambynameを使用した方が信頼性は高くなりますが。



shakh   (2001-12-05 02:08) [5]

そしてもう一つ追加。
多分私は犬がどこで鳴り響いたかについて不十分に説明した%)
クエリAdoQuery1.SQL.Add( "テーブルに挿入(col1、col2)値(" + "" "" + Edit1.Text + "" "" + "、" + "" "" + Edit2.text + "" "" + ")");
ここではすべてが明確です。 ただし、データの入力時に(たとえば)Edit1が空のままになっている場合、この要求を実行すると、Egorはクロールします。 したがって、最小限のコストで(エラー "sから)それらを取り除きたいと思います。
... values(:col1 ,: col2)のようなものを書くことは確かに良いですが、フィールドがほとんどなく、20ピースがある場合は、オブジェクトインスペクターでこれらすべてのパラメーターを作成し、その後、大きな質量で混乱することなく、編集から値を割り当てます-これはすでにトリックのある数字です。
タイプチェックを貼り付けることができます
Edit1.Text <> ""の場合、enable_field_to_query
しかし、これは完全な倒錯です!



Котелок   (2001-12-05 03:33) [6]

インスペクターでオブジェクトを作成する理由は明らかではありませんか?

空の編集とクエリへのパラメータの動的な包含のチェックに関しては、これはそのような倒錯ではなく、完全に正常な現象ですが、エンコードするのは面倒です。

ここに例があります:

sqlText:= "テーブルに挿入(";
edit1.text <> ""の場合
sqlText:= sqlText + "column1"
edit2.text <> ""の場合
sqlText:= sqlText + "column2"
削除(sqlText、長さ(sqlText)、1);
sqlText:= sqlText + ")値(";
edit1.text <> ""の場合
sqlText:= sqlText + ":column1、"
edit2.text <> ""の場合
sqlText:= sqlText + ":column2、"
削除(sqlText、長さ(sqlText)、1);
sqlText:= sqlText + ")";

AdoQuery1.close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.Add(sqlText);
AdoQuery1.ExecSql;

また、挿入するテーブルのコンストラクターでAccessにアクセスし、空になる可能性のあるすべてのフィールドについて、空の行の入力を許可するパラメーターを設定することをお勧めします。 そして、空のフィールドのチェックは消え、エラーはスローされません。



Ra   (2001-12-05 14:03) [7]

そのようなリクエストを防ぐ必要があるだけです。2つの方法のいずれか
1)実行前に、すべてのフィールドが入力されていない場合は確認してください-メッセージを表示してください...
2)または「コントロール(ほとんどの場合ボタン)を注ぐ」ことも、必要なすべてのデータが入力されるまで..... OnChangeイベントへのすべての編集で、次のハンドラーをハングさせます。

始める Button1.Enable:=(Edit1.Text <> "")および(Edit2.Text <> "")および... 終わり;




NDeu   (2001-12-05 14:19) [8]

> Ra©(05.12.01 14:03)
むしろ:
始まる
Button1.Enable:=(TEditとして送信).Text <> ""
終わり
:)





Котелок   (2001-12-06 01:00) [9]

> Ra
そのような要求が単に必要なときに、そのようなタスクが存在する場合があります。

私自身もこの問題に直面しましたが、25フィールドで通常の静的クエリを使用し、テーブルには空行を入力する権限がありました。



ページ: 1 全枝

フォーラム: "Bases";
現在のアーカイブ:2002.01.08;
ダウンロード:[xml.tar.bz2];

2階









メモリ:0.59 MB
時間:0.027 c
1-22208
Nikos77
2001-12-15 18:34
2002.01.08
書式設定の方法を教えてください


3-21982
急いで
2001-12-06 12:37
2002.01.08
データベースへのクライアント接続


1-22038
ディマ〜
2001-12-18 17:53
2002.01.08
起動したファイルにコマンドラインを転送する方法


1-22197
T2
2001-12-16 07:17
2002.01.08
プログラムでWindowsバスケットを無効にすることは可能ですか?


1-22172
アスタード
2001-12-19 22:12
2002.01.08
人々は助けてください???





アフリカーンス語 アルバニア語 Arabic アルメニア語 アゼルバイジャン語 バスク ベラルーシ Bulgarian カタロニア語 中国語(簡体字) 中国語(繁体字) クロアチア チェコ語 デンマーク語 Dutch 英語 エストニア語 タガログ語 Finnish フランス語
ガリシア語 ジョージアン ドイツ語 ギリシャ語 ハイチ語 ヘブライ語 ヒンディー語 ハンガリー語 アイスランド語 Indonesian アイリッシュ イタリア語 日本語 Korean ラトビア語 リトアニア マケドニア語 Malay マルタ語 Norwegian
ペルシア語 ポリッシュ ポルトガル語 ルーマニア ロシア語 セルビア Slovak スロベニア語 スペイン語 スワヒリ語 Swedish Thai トルコ語 ウクライナ語 ウルドゥー語 ベトナム語 ウェールズ語 イディッシュ語 ベンガル語 ボスニア語
セブアノ語 エスペラント グジャラート語 ハウサ語 モン族 イボ ジャワ語 カンナダ語 クメール語 ラオ語 ラテン マオリ語 マラーティー語 モンゴル語 ネパール語 パンジャブ語 ソマリ タミル語 テルグ語 ヨルバ語
ズールー語
Английский Французский Немецкий Итальянский ポルトガル語 Русский Испанский