• ベストアンサー

Delphi SQL

Delphi+InteBase 何がわからないのか、わかっていない状況です。 dbExpressのSQLConnection・SimpleDataSet、DataAccessのDataSource、DataControlsのDBGridを利用しています。 SimpleDataSetのDataset.CommandTextに「SELECT * FROM テーブル名」とかSQL文を書くことによって、希望のデータが表示されることまでは理解できました。 「SELECT MAX(ID) FROM テーブル名」など値を返す場合は、どのようにしたらよいのでしょうか? またCommandText:='DELETE FROM テーブル名'とすると、エラーにはなりますが、テーブルは空になっているのでtry文できりぬけています。 根本的にSQL文をどこに記述したらよいのかわかっていません。 どなたか、お助けを・・・

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

まずDelphiの教則本を1冊でも購入する事をお勧めします。 書店では少ないですがネットで探せば結構色々と出てきます。 Delphiのバージョンが不明ですがWin32の開発であればDel7もDel2006も実質変わりはありません。 さて、ご質問に簡単に回答させて頂きます。(変な所はどなたか突っ込みをお願いします) SimpleDataSetは大雑把にQueryコントロール+DataSetProvider+DataSource+ClientDataSetの塊みたいなものと考えて下さい。 なので最初はSimpleDataSetを使わず上記の4コントロールを配置してDBGridに接続すれば構造が分かり易いと思います。 話がそれてしまいましたがSQLを発行するのはQuery系コントロールです。 ADO用とかdbExpress用とか色々ありますのでご注意を。 ヘルプや書籍を見るなどしてまずは試行錯誤してみて下さい。

situmonnsya
質問者

補足

使用しているのはTurboDelphiです。 MS_ACCESSやファイルメーカはある程度使い込んでます。 ベータベースなしでのDelphiもそれなりにです。 Delphiで本格的(?)なデータベースは始めてで、とまどっています。 サイトにあったサンプルがSimpleDataSetだったので利用してました。 参考書をネットで探して一冊購入しましたが、ハズレでした。 私程度にちょうど良い参考書を教えて頂ければ幸です。

その他の回答 (2)

noname#182251
noname#182251
回答No.3

#1です。「教えて!goo」はDelphiユーザーが少ないようなので、質問先を替えた方が良いかもしれません。 http://www.users.gr.jp/content/delphiml.aspx このメーリングリストでは随分助けて貰いました。非常に高度な問題から、初心者のサポートまで、幅広く受け入れられています。 過去に投稿されたメールは下記 http://www2.big.or.jp/~osamu/Delphi/index.html で、閲覧・検索できます。

situmonnsya
質問者

お礼

ありがとうございます。

noname#182251
noname#182251
回答No.1

Delphiのバージョンなどが記されていませんし、InteBaseは使用したことがないので、あくまでも参考として。私の場合 環境:CeleronD 3.06GH + 1GB RAM + XP Home SP2 + DP6 UP2+MS-Access >「SELECT MAX(ID) FROM テーブル名」など値を返す場合は 「SELECT * FROM テーブル名」と同じようにしています >'DELETE FROM テーブル名' ADOCommandのExecuteを使用しています。

situmonnsya
質問者

補足

ターボデルファイです。 >「SELECT * FROM テーブル名」と同じようにしています 返ってきた値はどこを見たらわかるのでしょうか? 例えば SimpleDataSet1.DataSet.CommandText:='SELECT MAX(ID) FROM テーブル名'; Ret:=SimpleDataSet1.DataSet.?????; とか?

関連するQ&A

  • SQLについて

    SELECT テーブル名.A テーブル名.B FROM テーブル名 WHERE テーブル名.A = Y テーブル名.B = Z SELECT 別テーブル名.A 別テーブル名.B FROM 別テーブル という2つのSQLがあったとします。この時、別テーブルのSELECT文より取得してきた、AとBを上の式の条件(Y,Z)で両方同時に使用したい場合、どのようなSQLを書いたら良いのでしょうか? 1文にまとめて書く場合です。

  • SQLのデータの一部分を切り取って表示するには?

    visual basicでSQLのデータを表示する際に、そのデータの左二文字だけ切り取ってdatagridviewに表示したいのですが、やり方がわかりません。 単にselect文でdatagridviewに表示するのはできたのですが。 切り取りには(Strings.Right(A, Len(A) - 6))とこの構文を使えばいいのでしょうか? ちなみにdatagridviewは3列あって、そのうちの1列目だけをそうしたいと思います。 普通に表示した場合のコードは以下のようです。     Dim sConn As SqlClient.SqlConnection Dim sda As SqlClient.SqlDataAdapter Dim ds As New DataSet sConn = New SqlConnection () 'SQLへの接続文字列     sda = New SqlDataAdapter("SELECT * FROM         kakeibo",sConn) 'kakeiboから呼び出す条件 sda.Fill(ds) '呼び出す datagridview1.DataSource = ds.Tables(0) '表示

  • SQL serverデータ取得

    public static DataSet GetCustomers() { string sql = @"SELECT * FROM M_CHARGE"; SqlConnection conn = new SqlConnection(DBConfiguration.DbConnectionString); SqlDataAdapter da = new SqlDataAdapter(sql, DBConfiguration.DbConnectionString); da.SelectCommand = new SqlCommand(sql, conn); DataSet ds = new DataSet(); ds.Tables.Add("M_CHARGE"); da.Fill(ds, "M_CHARGE"); return ds; } da.Fill(ds, "M_CHARGE");の部分でインスタンスエラーになります。どうしてでしょうか? 誰か教えて下さいお願いします(TдT)

  • SQLServer DELETE 件数取得

    COBOL上(NETExepress5.0)にSQL構文を埋め込んでプログラムを作っています。 DELETE文を発行して、そのDELETE件数を取得して、DISPLAY文に表示したいのですが、 どのようにすればよいでしょうか。 DELETE文(COBOL文中) 例)  EXEC SQL DELETE FROM テーブル名  END-EXEC 先にSELECT COUNT(*) FROM テーブル名 とかしてもかまわないです。 よろしくお願いします。

  • SQL '%@'とは?

    こんばんわ。 SQLの質問なのですが、 SELECT * FROM aテーブル WHERE aテーブル.番号 IN '%@' というSQL文が 学校で使われていましたが、 '%@'とは何を指すのでしょうか? 調べても分からなかったので ご教授願います。

  • SQLについて何ですが

    一つのSQLで下記の様な検索が出来ないかと考えています、 大分類に分けて大分類の中で売れている商品のTOP10を表示し、 現在表示されている商品を抜いた売れている商品TOP100もに表示できるようとしています、 分類のテーブル・商品がどの分類に当てはまるのか関連づけし注文数も保持しているテーブル・商品の売れ行きを保持しているテーブルがあり 分類テーブルには15個(将来的に増える可能性ある)の分類ワードが入っていて、分類別に売れているTOP10を表示し重複部分もあるので最大150個の商品が表示されるようになっています、 全商品の売れ行きTop「表示されている商品プラス100件」を割り出しその中から表示商品はずしてみようと思いこの様なSQL文と作ったのですが今一うまくいっていないような気がします、 「select 商品名 注文数 from 商品テーブル    where 商品名 not in( select 商品名 from 分類商品テーブル where 分類 in ( select 分類 from 分類テーブル )    order by 注文数 desc limit 10) order by 注文数 desc limit 表示商品数+100」 どうもうまく表示できていない様な気がしているのですが、 このSQLどうなのでしょうか? ほかにもっといいSQL文があれば教えてください。 」

  • SQL WHERE文のノットイコールについて

    初歩的な質問ですみません。 Oracle9iでsqlplusで接続しています。 「member_accountテーブルのdelete_flag(VARCHAR2)カラムの値が'1'ではない」ものを抽出したいと考えてます。 ただ、正しい結果が返ってきません。 何が問題でしょうか?よろしくお願いいたします。 ============================================================ SQL> select count(ID) from member_account; COUNT(ID) ---------- 16450 SQL> SQL> select count(ID) from member_account where delete_flag='1'; COUNT(ID) ---------- 107 SQL> SQL> select count(ID) from member_account where delete_flag<>'1'; COUNT(ID) ---------- 0 SQL> SQL> select count(ID) from member_account where delete_flag!='1'; COUNT(ID) ---------- 0 ============================================================ よろしくお願いいたします。

  • VB2005 DataGrdViewで、SQL文記述

    VB6からVB2005に切り替える作業をしています。 DataGridViewにMDBファイルの中身を表示させることは出来ました。 DataSet,BindingSourceを用いています。 コードの記述で、SQLの文章を変更させたいのです。 WHERE文の記述を変えたりしたいのですが。 DataSourceにSQL文を記入することが出来ません。 DataSourceには記述できないのでしょうか? それとも、根本的に間違っているのでしょうか。 よろしくお願いいたします。

  • SQL ?で終わる

    アクセスのSQL文で、テーブルのフィールドの値が、最後が?で終わるものを抽出したいのですが SELECT テーブル.フィールド FROM テーブル WHERE (((テーブル.フィールド) Like "[*?]")); これだと1件も抽出されません。 Like "[*?]"が間違ってると思うのですが、どうすればいいでしょうか?

  • オラクル+SQL Plus

    SELECT A FROM AAA WHERE ROWNUM<=5とSQLを実行すると 必ず5つ返ってくるとは限らないみたいで… テーブル名やフィールド名が分かっている状態で 何万件ものデータベースから指定した個数だけ返ってくるような SQL文があるのであれば教えてください。 個数さえ合っていれば順番は特に気にしません。 よろしくお願いします。