• 締切済み

SQLのmaxで求めた値を変数に代入する

ex) select max(id) from table でかえってくる値を変数に代入するにはどのようにコーディングすればよいのでしょうか? ExcelVBAを使っています。

noname#26093
noname#26093

みんなの回答

回答No.2

No1.の方のご指摘どおり、どういう方法で実行しているかを書かないと的確な回答は難しいですよ。 でもって、VBA なんでADO経由ですかね、きっと。 まずはSQL文を若干変更します。 (変更後) select max(id) as max_id from table でもって、プログラム側で (取得したレコードセットを rstHoge とすると) rstHoge.Fields("max_id").value で取得できるはずです。 ( rstHoge.Fields.Item("max_id").value も同義。) SQLを変更しないでフィールド番号で取得する手もありますが、可読性が悪いのでお勧めしません。 ADOじゃないなら、補足してくださいな。

回答No.1

ネイティブSQLではないのでしょうから、SQLをどういう方法で実行しているのか書かないと、具体的な回答はもらえないのでは?

noname#26093
質問者

お礼

解決しました。 すいません

関連するQ&A

  • 【Excel+MySQL】select文で返ってきた値を変数に入れたい。

    ExcelVBAの中に 変数A = "select max(id) from data" と記述しselect文で返ってきた値(例えば100)を変数Bに代入したいと思います。 どのようにコーディングすれば可能でしょうか? いくら調べてもわからなかったので教えてください。 よろしくお願いいたします。

  • SQLによって計算した変数を次のSQLに代入できますか?

    user(テーブル) id | name | bango 1 | taro | 1001 2 | sato | 1012 3 | miho | 1027 4 | hiro | 1066 *idはautoincrement、bangoはユニークの値 mark(テーブル) id | check | bango 1 | 0 | 1001 2 | 1 | 1001 3 | 1 | 1001 4 | 0 | 1012 5 | 0 | 1012 6 | 1 | 1027 7 | 1 | 1027 8 | 0 | 1066 *idはautoincrement、checkは1か0、bangoはユニークの値 checkが1の確立が高い順にnameを一覧表示したいのですが、 うまく2つのテーブルを繋げることができません。 queryによって計算した変数を次のqueryに代入することはできるのでしょうか? 具体的には以下のような感じです。 bangoが1001のcheck=1の確立を出す場合 //bangoが1001の数 $test1 = mysql_query("select count(id) from mark where bango='1001';",$conn $row1 = mysql_fetch_array($test1, MYSQL_ASSOC); $totalct1 = $row1["count(id)"]; //bangoが1001かつcheckが1の数 $test2 = mysql_query("select count(id) from mark where bango='1001' and check='1' ;",$conn) $row2 = mysql_fetch_array($test2, MYSQL_ASSOC); $totalct2 = $row2["count(id)"]; //bangoが1001かつcheckが1の確立 if($totalct2==0){ $kakuritu = '0' ; } else{ $kakuritu = $totalct2 / $totalct1 * 100 ; } 上記の変数を下記のように入れ込むことはできないのでしょうか? $test3 = mysql_query("select name from user order by $kakuritu ;",$conn)

    • ベストアンサー
    • MySQL
  • mysqlテーブルから一つレコードを取得して変数に

    mysqlテーブルから一つレコードを取得して変数に はじめまして。仕事上必要で独学で勉強を始めましたが、行き詰ってしまったので教えてください。 mysql+phpにて以下のテーブル(tbl_ex)で、phpから、'test'のレコードを足がかりに、idの'001'を返して変数に代入する方法がわかりません。 tbl_ex +-------+-----------+ | id | account | +-------+-----------+ | 001 | test | +-------+-----------+ | 002 | sample | +-------+-----------+ accountのtestからidを抜き出すのに SELECT id FROM tbl_ex WHERE account = 'test'; という具合にやったのですが、それからどうidを変数にするのかわからず、 元から違っていて別の方法があるのかと疑問です。 結果、$id='001' というようにしたいです。 凡庸な質問なのかもしれませんが、ご教授お願い致します。

    • ベストアンサー
    • PHP
  • 動的SQL (その2)

    2008です。 有給休暇の使用日(複数)を文字列として、一つのフィールドに入れる 仕組みを作ろうとしています。 (4/1、6/20、6/21 8/30・・・・・てな感じです) 動的SQLでパラメータに値を代入する方法によって結果が変わってしまいます。 現象1 パラメータに代入(Set)するときに「'A0'」をセットすると正常に動きますが、 「(Select Max(コード) From テーブル Where コード='A0')」にすると パラメータの入力を求められます。 しかし後者をIf文の中で代入するとパラメータの入力は求められません(下記) if Select Max(コード) From テーブル Where コード='A0' = 'V0'   set @para = 'V0' else   begin   set @para = (Select Max(コード) From テーブル Where コード='A0')   end **********@paraを使う動的SQL*********** 現象2 上記のIf文でパラメータを代入後、動的SQLの直前に@paraの値を確認の為 テーブルに書き込む(Insert)と動的SQLの結果が無くなってしまいます。 動的SQLの後にも書込を入れてみましたが、同じ値が書き込まれています。 当然、直前の書込を無くせば正常に表示されます。 何とか動作するのですが納得できず、将来に禍根を残しそうな現象であり どうするべき(スルーするべき)か悶々としています。

  • PL/SQLで変数へ値の代入

    PROCEDURE TEST(PI_ABC IN A_TABLE.A_CODE%TYPE) IS CURSOR CUR IS SELECT A_CODE FROM A_TABLE; BEGIN --抽出したデータを代入 FOR REC_CUR IN CUR LOOP PI_ABC := REC_CUR.A_CODE; END LOOP; 上記のコードを実行すると ORA-06502:数値または値のエラー PL/SQL: 文字列バッファが小さすぎます。 とエラーが出ます。 このプロシージャを呼び出す時にも同じテーブル同じ項目を渡しています。 同パッケージ内で同じ事をやっているのに特定のプロシージャだけ 上記のエラーが出てしまいます。 環境:Windows2003Server oracle9i

  • テキストボックスの値を変数に代入したい。

    テキストボックスの値を変数に代入したいのですが、どういうコードを書けばいいですか? 例えばTextBox1の値を変数xに代入したいのですが。

  • SQL文で教えてください

    初めてです。お願いします。 次のようなテーブルがあります。 ID kosuu ------------ 1 3 2 5 3 1 kosuuの一番大きい値とそれに紐づくIDを取得したいのですが SELECT ID, Max(kosuu) FROM tblX と書くと、IDが不正だとおこられてしまいます。 ID kosuu ------------ 2 5 を抽出するにはどうしたらよいでしょうか? Access2000です。宜しくお願いします。

  • 「バリアント型でない変数に Null 値を代入しようとしました」と、ならないようにしたい

    access フォームのテキストボックスにID(数字)を手入力し、 テーブルから情報を引き出すというのを作っています。 問題は、一度入力した数字を消した後(バックスペースキーやデリートキーや切り取り)、エンターキーを押すと 「バリアント型でない変数に Null 値を代入しようとしました」 と表示されてしまう点です。 業務上支障はありませんが、この表示を無くしたいのです。 このIDは常に5桁である必要がある為、 フォーム上では定型入力を”99999”としております。 テーブル上ではテキスト型としております。 どのようにすれば、解決できるでしょうか。

  • SQLで複数テーブルの変数を1つにまとめる方法

    MySQL 5.5を使用しています。 以下のテーブルA、B(同じ構造でIDは重複しない)において A ID | ポイント 1 | 10 3 | 20 5 | 5 6 | 5 B ID | ポイント 2 | 20 4 | 20 7 | 5 select ID,hoge from A,B; とすると、 A.ID | B.ID | A.hoge | B.hoge 1 |. | 10 |. . | 2 |. | 20 3 |. | 20 |. . | 4 |. | 20 5 |. | 5 |. 6 |. | 5 |. . | 7 |. | 5 という結果が得られますが、これを ID2| foo 1 | 10 2 | 20 3 | 20 4 | 20 5 | 5 6 | 5 7 | 5 という形に同一の変数にまとめるにはどうすればいいでしょうか。 select A.ID as ID2, B.ID as ID2 from A,B; のようにasを使用して1つの変数を作成しようとしましたが、別の変数として 認識されていまいました。

    • ベストアンサー
    • MySQL
  • PL/SQLの基礎的な質問ですが・・

    こんばんわ! PL/SQLの超初心者なのですが、以下ように「aaa」という変数に一つ目のselect文の結果を代入して、二つ目のselect文のテーブルにその名前を当てはめたいだけなのです。 DECLAER aaa VARCHAR2(30) BEGIN select max(TABLE_NAME) into aaa from ALL_TABLES Like '***'; select * from aaa END; ところが、結果は「表またはビューが存在しません」となります。 このような使い方はできないのでしょうか? どなたかご教示いただけませんでしょうか?宜しくお願いします。

専門家に質問してみよう