お世話になります。初心者の質問ですので、
基本的な質問となり恐縮です。
簡単な名簿のデータベースを作りたいと思っています(以前にアクセスは
少し使った経験はあります)。
管理情報としては、登録日、名前、生年月日、備考A、備考B です。
Delphiでデータベースを作ったことがないのですが、
RadStudio10.2Tokyoで作ることは出来るのでしょうか?
出来る場合、参考になるようなサンプルはございますでしょうか?
あるいは学習サイト等ご存知でしたら、教えていただけますでしょうか?
お持ちのDelphiまたはRAD StudioのエディションはStarter/Pro/Ent/Archのどれでしょう?
ちなみに一般的な意味でDelphiで作れるのはデータベースを利用するプログラム、つまり
何らかのデータベースに格納されているデータを読み書きして何かをするプログラムですが、
認識はこれで合っていますか?
通りすがりさん
いつもありがとうございます。(^_^;)
Rad Studioのエディションは、Embarcadero® Delphi 10.2 Starterと
なります。アクセスで作ったデータベース(以外はよく判らないので)に
繋げて、取り敢えず使用してみようと思っています。
現在、アクセス2010で
SaMeibo.accdb ⇒なお、*.mdbの形式でも作れます。
T_SMeibo (テーブル名)
登録日、名前、生年月日、年齢、備考1、備考2
を作っています。
上記とDelphiで繋げて、読み書きする方法が判らない状態です。
下記のMr.Xrayさんのを参考にZeosLibの設定は出来ました。
http://mrxray.on.coocan.jp/Delphi/plSamples/564_ZeosLib_DelphiBerlin.htm#07
アクセスでDBも作成して、あとはつなげるだけになりました。
Button1を押しても表示されない状況です。
どこが悪いのでしょうか・・・・
---------------------------------
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB,
Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, ZAbstractRODataset, ZAbstractDataset,
ZAbstractTable, ZDataset, ZAbstractConnection, ZConnection;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
ZConnection1: TZConnection;
ZQuery1: TZQuery;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// フォーム生成時の処理
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
//TDataSource,TDBGridの設定
DataSource1.DataSet := ZQuery1;
DBGrid1.DataSource := DataSource1;
end;
//=============================================================================
// フォームを閉じる時の処理
//=============================================================================
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ZQuery1.Close;
ZConnection1.Disconnect;
end;
//=============================================================================
// ZeosLibを使用してJETデータベースに接続
// Micorosoft Access 2007/2010 が使用しているJETエンジンが対象
//
// JETエンドンのデータベースは1つのファイルに複数の表を格納する
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
LConnectStr : string;
begin
//念のため接続を切断してから設定
ZQuery1.Close;
ZConnection1.Disconnect;
//接続文字列の設定
//パスワードの設定あり
LConnectStr := 'Provider=Microsoft.ACE.OLEDB.12.0'
+ ';Jet OLEDB:Database Password=123'
+ ';Data Source=' + ExpandFileName('D:\■■DelphiSoft\DbTest\Win32\Debug\TEST2007.mdb')
+ ';Persist Security Info=False';
ZConnection1.Database := LConnectStr;
ZConnection1.Protocol := 'ado';
//データベースへ接続
ZConnection1.Connect;
//TZQueryの設定
//日本語の表名は[]で括る
//日本語の項目名は[]または"(ダブルクォーテーション)で括る
ZQuery1.Connection := ZConnection1;
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('select * from [食品カロリ表] order by [番号]');
//クエリを開く
ZQuery1.Open;
end;
end.
ちなみに、テーブル「食品カロリ表」は、Mr.Xrayさんのページにある例と同じですが、
Noby さんの TEST2007.mdb にも、食品カロリ表 というテーブルは、ありますか?
igyさん
いつもありがとうございます。
テーブル名、パスワードも同じに設定しています。
特別エラーもなく、ボタンを押しても何も表示されない状況です。
コンパイル後の同じフォルダーにTEST2007.mdbを置いています。
どこが悪いのでしょうか?
> 特別エラーもなく、ボタンを押しても何も表示されない状況です。
では、
> procedure TForm1.Button1Click(Sender: TObject);
の最後
> //クエリを開く
> ZQuery1.Open;
の後に、
with ZQuery1 do
begin
First;
if not EOF then
ShowMessage('データあり!')
else
ShowMessage('データがありません。');
end;
を追加した場合、どうなりますか?
igyさん
ありがとうございます。
データあり! と出ますね。
それでは、
>// フォーム生成時の処理
>procedure TForm1.FormCreate(Sender: TObject);
のところに、
Caption := 'データベースのテスト';
Application.Title := Caption;
を追加したら、フォームのタイトル等が、「データベースのテスト」になりますか?
>フォームのタイトル等が、「データベースのテスト」になりますか?
ならないですね。
>// フォーム生成時の処理
>procedure TForm1.FormCreate(Sender: TObject);
このFormCreateは、(フォーム生成時に)動作していますか?
igyさん
FormCreateが動いていなかったんですね。
削除して再度認識させましたら、きちんとデータベースが表示
させることが出来ました。
初めて、DELPHIでデータベースに接続をさせることが出来ました。感動です!!
ちなみに、OnCreateが動かなくなった原因というのは何なのでしょうか?
> ちなみに、OnCreateが動かなくなった原因というのは何なのでしょうか?
実際の状態を見ていないので、正確にはわかりませんが、
オブジェクトインスペクタで、正しく設定されていなかった(あるいは、設定がクリアされていた) とかかもしれませんね。
>ブジェクトインスペクタで、正しく設定されていなかった
>(あるいは、設定がクリアされていた) とかかもしれませんね。
そうなんですね。勉強になりました。
igyさん、通りすがりさん
ご親切にご対応下さり本当にありがとうございました_(._.)_
このあと、使用目的に合いそうですので、SQLITEともつなげてみようと
思います。
ツイート | ![]() |