Delphi5で以下のようなことを試みてます。
かなり苦戦しています。よろしければ、助けて下さい。
項目 値段 生産地 売買
----------------------------------------
パソコン1 10万 日本 OK
パソコン2 15万 米国 OK
パソコン3 5万 台湾 NG
パソコン4 10万 台湾 OK
パソコン5 10万 日本 NG
上記のようなデータベースファイル(*.db)があります。
1.項目からパソコン3を検索し、パソコン3の行を更新したいです。
5万を10万に。NGをOKに。といった感じです。
2.各欄のソートをしたいです。
値段の欄をソートするボタンを押すと、5,10,10,10,15万と並び変わります。
現在作成したデータベースはDelphiのDataSource、Queryコンポーネントを使用し作成しています。
それは、SQL文の質問になるんでしょうか?
こんなもんかな?
> 1.項目からパソコン3を検索し、パソコン3の行を更新したいです。
> 5万を10万に。NGをOKに。といった感じです。
UPDATE [TABLE名] SET 値段='10万', 売買='OK' WHERE 項目='パソコン3'
> 2.各欄のソートをしたいです。
> 値段の欄をソートするボタンを押すと、5,10,10,10,15万と並び変わります。
SELECT 項目,値段,生産地,売買 FROM [TABLE名]
ORDER BY [値段] (DESC)
DESCを付ける付けないで降順か昇順か変わります。
Fusaさん、ありがとうございます。
SQL文での対応しか無理でしょうか?
プログラムで対応したいのですが。
nextを使って、行移動し、その行のデータを取得。
そして、その行の情報を変更し、nextで次の行へ移動するという方法で作成してみようと思います。
ただ、ソートの方法が分かりません。
DBGridでのソートについて、知ってることがあれば、教えて下さい。
よろしくお願いします。
この辺を参考にしてみて下さい。
[DBGridでソートするには?]
https://www.petitmonte.com/bbs/answers?question_id=1661
[データセットをソートする (ADO)]
http://www.wwlnk.com/boheme/delphi/dbtips/css0320.htm
SQLも立派にプログラムの中だと思います。
編集 削除HOtaさん、すみません。
SQLについて、知りませんでしたので、他の方法で対応したいと思い、
あのような言葉となりました。
SQLを実行するにはどうしたらよいのでしょうか?
過去ログなどをみて、少しずつ進めてみました。
ある程度作成できたのですが、データを更新するときに
書込み禁止のエラーが発生し、データを更新しません。
書込み禁止解除はどうすればよいのでしょうか?
TQueryのRequestLiveプロパティを true でよいですね。
編集 削除BTさん、ありがとうございます。
TQueryのRequestLiveはTrueになってます。
プログラムです。
LotDataGrid.DataSource.DataSet.Edit;
LotDataGrid.DataSource.DataSet.FieldByName('ProcTime').AsString := strProgTime;
LotDataGrid.DataSource.DataSet.FieldByName('ConvTime').AsString := strConvTime;
LotDataGrid.DataSource.DataSet.FieldByName('Status').AsString := strRenewalStatus;
LotDataGrid.DataSource.DataSet.FieldByName('RestTime').AsString := strRestTime;
LotDataGrid.DataSource.DataSet.Post;
過去ログなどを見ながら作成しました。
どうにかカタチになりました。
書き込みエラーがでてたのは、SQLでソートしていた部分が悪さをしていたみたいです。
SQL文よりテーブルをSELECTしてたのですが、
ソートのSQL文でテーブルのSQL文が上書きされていた?みたいです。