• 締切済み

SQL文の関数らしいのですが、意味を正確に調べたいとき。

Visual Basic で組んだ業務ソフトのソースを見ているところなのですが…。データベースは SQL Serverを使っています。その中のコードとして SQL = "SELECT * FROM MPGSUB " _ & "WHERE 端末ID = " & Conv_DBValue(Client_ID, DB_String) というのがあります。これは、《"端末ID"列から、DB_Stringの型に変換した値をClient_ID という列名にして取得する》ということで良いのでしょうか。 Conv_DBValue やDB_String は、手元の辞典にも載っていないし、ネットで検索しても解説しているところがありません。このようなときは、プログラムで参照すべき他のモジュールが足りないと考えた方が良いのでしょうか。 ときどき調べがつかない関数があるので困ってしまうので、そのような時はどうすべきか教授願いたいです。(^^;

みんなの回答

noname#25230
noname#25230
回答No.3

文字列をよく見てください。SQLの関数であれば、VBにおいては単なる文字列であり、ダブルクォートの中にあるはずです。これは、Conv_DBValue関数が「&」で繋がっていますよね。ということは、「VBで定義されたConv_DBValue」関数の結果を、SQL文の文字列に繋いでいるだけです。 関数はVBのソースのどこかにあるはずです。

回答No.2

vbでConv_DBValueを右クリック→定義を選択してもそのファンクションにとびませんか?

  • kagep
  • ベストアンサー率23% (171/721)
回答No.1

>《"端末ID"列から、DB_Stringの型に変換した値をClient_ID という列名にして取得する》ということで良いのでしょうか。 いえ、違うと思います。 Conv_DBValue(Client_ID, DB_String) というのは、VBの関数(プロジージャ)では? Client_IDとDB_Stringという変数に格納されている値を引数にして、 Conv_DBValueの戻り値が、MPGSUBテーブルの端末IDフィールドの値と一致するものを検索しているのでしょう。 列名はテーブルの列名のままかと思います。 にしても、この変数名といい関数名といい、 ネーミングルールなんてあったものぢゃないですねぇ。 品質も「それなり」ではないかと・・・。 SQL文の*使用も、やめた方がいいと思います。 って、解析元のソースなので、既存システムには関係ない、ということなら安心ですけどね。

関連するQ&A

  • SQL文で

    SQL2000serverで 異なる2つのデーターベースの中にある 別のテーブルの情報を SQL文を使って、抽出する事は出来るのでしょうか? たとえば下記のように「DB-A」「DB-B」と言った 二つのDBの中のそれぞれのテーブルのIDフィールドで リレーションを取ってDB-AのTablA1のFldAの 値(AA)からDB-BのTablB1のFldBの値(あ)を 抽出することはSQL文で可能なのでしょうか? DB-A DB-B TablA1 TableB1 ID FldA ID FldB 1 AA 1 あ 2 BB       2 い 3 CC 3 う 4 DD 4 え

  • sql文のヵウント関数について

    sql文のcountを使い、humanテーブルのレコード件数を取得し出力したいのですが、 Object of class SQLite3Result could not be converted to string in のエラーが出て困っています。 (1)humanテーブルのレコード件数を表示する方法を教えてください。(sql文はうまく動いているのが確認できているので、表示する方法を教えていただきたいです。データベースの接続も正常です。) (2)sqlの出力って配列のみなのでしょうか? <?php // 変数の初期化 $db = null; $query=null; $con =null; $db = new SQLite3("test.db"); $res = $db->query ($sql); // データの取得 $query = "SELECT count (id) from human"; //クエリを実行 $con = $db->query($query); //データの件数を表示する print $con; ?>

    • ベストアンサー
    • PHP
  • VBSの中で書くSQL文の記述方法

    よろしくお願いします。 select * from db1 into id,password,date,name where db1_id = **** and db1_password = **** and db1_date = 99999999; (db1_id,db1_password,db1_dateがプライマリキー) db1という表からプライマリキーに該当したデータを取り出し、 変数に格納したいと思っています。 このSQL文をASPのVBSの中で実現する方法を教えてください。 <% Dim Conn,SQL,RS Dim id Dim password Dim date Dim name db1=server.mappath("db1.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db1 Set Conn = Server.CreateObject("ADODB.Connection") Conn.open DBName SQL = "select * from db1" INTO = "into id,password,date,name" WHERE = "where db1_id = **** and db1_password = **** _ and db1_date = 99999999" SQL = SQL & INTO & WHERE & ";" Set RS = Server.CreateObject("ADODB.Recordset") RS.Open SQL, Conn,3,3 %> これでうまくいくかな~と思ったのですが・・・。

  • SQLで取得したフィールドをSQL文として利用

    お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。

  • テーブルのクリアについて

    テーブルの枠に一行ごとに各クリアボタンつけてます。 そのクリアボタンを押して、対応する行の内容をリセットしたいです。 下のソースだとwhere 条件つけてないので、もちろん全行リセットされてしまいます。が + " where member_id=" + member_id;という条件つけたら、リセットされませんでした・・ 詳しい方いらしゃったら、ご教授ください。 よろしくお願いします。 String comment = ""; String attendance ="0"; String member_id = request.getParameter("member_id"); // MyDBAccess のインスタンスを生成する MyDBAccess db = new MyDBAccess(); // データベースへのアクセス db.open(); // データベース更新用のSQL文を作成 String sql = "update shainlist set comment='" + comment + "', attendance=" + attendance; // SQL文を実行 db.execute(sql); // データベースへのコネクションを閉じる db.close(); // 元のページへリダイレクト response.sendRedirect("jsptest.jsp");

  • SQL文の質問

    DBの検索で AAAというデータベースで user_id,log_no,status と項目があって、 user_idとlog_noでプライマリーキーで 検索する条件が 同一user_idが複数件ある場合のみ、 log_noが0のuser_idだけ検索したいという SQL文を教えてください。 たとえば、DBには user_id log_no status 'aaaa1' 0 0 'aaaa2' 0 0 'aaaa2' 1 0 'aaaa3' 0 0 'aaaa3' 1 0 とはいっていたら、 'aaaa2' 0 0 'aaaa3' 0 0 の2件だけSELECTできるSQL文は可能でしょうか? すみません。 どなたか宜しくお願いします。

  • ユーザー定義関数の意味

    下記のユーザー定義関数の意味を自分なりに解釈しました。 下記の意味で合っていますか? // $dbと$user_idを受け取ったget_user関数は、$dbと$sqlを受け取ったユーザーの情報を取り出す function get_user($db, $user_id){ // データベースに接続してusersテーブルからuser_idが$user_idに一致するuser_id、name、password、typeを1行だけ表示する $sql = " SELECT user_id, name, password, type FROM users WHERE user_id = {$user_id} LIMIT 1 "; return fetch_query($db, $sql); } // $dbを受け取ったget_login_user関数は、変数dbと変数login_user_idを受け取ったget_user関数を返す function get_login_user($db){ // 変数login_user_idをセッションのユーザーIDと定義する $login_user_id = get_session('user_id'); return get_user($db, $login_user_id); }

    • ベストアンサー
    • PHP
  • SQL文の作成について

    前の質問が解決してないのに、すいません。 SQL文を作成して、関数に投げると配列で 実行結果が返ってくるらしいのですが。 SQL文作成時に変数をWHERE節に組み込む 記述の仕方が自信ないです。以下のような感じです。 Dim srtSql As String Dim Key_Id As String Call Key_Get(Key_Id)  ’キーを取得 strSql = strSql & ”Select Tb*” strSql = srtSql & ” From Tb ” strSql = strSql & ”Where ” srtSql = strSql & ”Tb_Key_Id = ’” strSql = strSql & Key_id & ”’” のように(Accessだとこんな感じ【キーはSring】)ダブルクォーテーションの外に書いてよいのでしょうか?

  • JAVAに書くSQL文について教えてください

    Oracle内のデータを更新しようとしていますが ORA-00904というエラーが表示されます。 調べていると列名は「”」で囲ってはいけないと 書かれていたので、それでいろいろ試行錯誤してみたのですが エラーがなくなりません。 「SYAIN1」と「SYAIN2」は変数になっています。 このSQL文が機能するように、アドバイス頂けるとうれしいです。 int row_count = smt.executeUpdate(Update SYAIN_MASTER set SYAIN_NAME = SYAIN2 where SYAIN_ID SYAIN1);

    • ベストアンサー
    • Java
  • DB2のSQL

    select * from xTABLE where EMP_ID = "P001" というSQLを実行すると SQL0206N "P001" is not valid in the context where it is used. SQLSTATE=42703 のエラーが出ます。 SQLSTATEで調べても「"P001"の列がテーブルにない」ということみたいですが 列名で捉えている時点でおかしい気がします select * from xTABLE where EMP_ID = null のSQLは正常にテーブルのSELECT結果が返ってきます。 どうすればよいでしょうか?