home > OLE オートメーション > ADO >

ForNext

Only Do What Only You Can Do

22. パラメータクエリー

VBScript

JScript

Perl

PHP

Python

Ruby

PowerShell

Scala

F#

C

C++

C++Builder

更新日 : 2005.12.13
void __fastcall TForm1::Button18Click(TObject *Sender)
{
    //表示用コントロールをクリア
    ListBox1->Items->Clear();
    ListBox2->Items->Clear();

    Variant cn = Variant::CreateObject("ADODB.Connection");

    //Edit3 に mdbファイル名を入力
    cn.Exec(PropertySet("ConnectionString")<<"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Edit3->Text + ";");
    cn.Exec(Procedure("Open"));

    //Edit4 に テーブル名を入力
    //Edit5, Edit6 に フィールド名を入力
    AnsiString sql =  "UPDATE " + Edit4->Text + " "
                   +  "SET "    + Edit6->Text + " = DataValue "
                   +  "WHERE "  + Edit5->Text + " = KeyValue  ";

    Variant cmd = Variant::CreateObject("ADODB.Command");
    cmd.Exec(PropertySet("ActiveConnection")<<cn);
    cmd.Exec(PropertySet("CommandText")<<sql);

    //Edit1, Edit2 に 値を入力
    cmd.Exec(PropertyGet("Parameters")<<"KeyValue").Exec(PropertySet("Value")<<(Edit1->Text));
    cmd.Exec(PropertyGet("Parameters")<<"DataValue").Exec(PropertySet("Value")<<(Edit2->Text));
    cmd.Exec(Procedure("Execute"));

    //Edit4 に テーブル名を入力
    //Edit5 に フィールド名を入力
    sql = "SELECT * FROM " + Edit4->Text + " "
        + "WHERE "  + Edit5->Text + " = KeyValue";
    cmd.Exec(PropertySet("CommandText")<<sql);

    //Edit1 に Key値を入力
    cmd.Exec(PropertyGet("Parameters")<<"KeyValue").Exec(PropertySet("Value")<<(Edit1->Text));

    Variant rs = cmd.Exec(Function("Execute"));
    while (!rs.Exec(PropertyGet("EOF")))
    {
        //表示用コントロールに項目内容をセット
        Variant fd = rs.Exec(PropertyGet("Fields")<<0);
        ListBox1->Items->Add(fd.Exec(PropertyGet("Value")));

        fd = rs.Exec(PropertyGet("Fields")<<1);
        ListBox2->Items->Add(fd.Exec(PropertyGet("Value")));

        rs.Exec(Function("MoveNext"));
    }

    cn.Exec(Procedure("Close"));
}

VC++

C#

Java

Objective-C

D

VB

VB.NET

Delphi

更新日 : 2005.12.13
procedure TForm1.Button18Click(Sender: TObject);
var
    cnn :Variant;//Connection
    cmd: Variant;//Command
    rs:  Variant;//Recordset
    sql: string;
begin
    //表示用コントロールをクリア
    ListBox1.Items.Clear;
    ListBox2.Items.Clear;

    cnn := CreateOleObject('ADODB.Connection');

    //Edit3 に mdbファイル名を入力
    cnn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Edit3.Text + ';';
    cnn.Open;

    //Edit4 に テーブル名を入力
    //Edit5, Edit6 に フィールド名を入力
    sql := 'UPDATE ' + Edit4.Text + ' '
        +  'SET '    + Edit6.Text + ' = DataValue '
        +  'WHERE '  + Edit5.Text + ' = KeyValue';

    cmd := CreateOleObject('ADODB.Command');
    cmd.ActiveConnection := cnn;
    cmd.CommandText := sql;

    //Edit1, Edit2 に 値を入力
    cmd.Parameters('KeyValue')  := Edit1.Text;
    cmd.Parameters('DataValue') := Edit2.Text;
    cmd.Execute;

    //Edit4 に テーブル名を入力
    sql := 'SELECT * FROM ' + Edit4.Text + ' '
        +  'WHERE '  + Edit5.Text + ' = KeyValue';
    cmd.CommandText := sql;

    //Edit1 に 値を入力
    cmd.Parameters('KeyValue') := Edit1.Text;
    rs  := cmd.Execute(sql);

    while not rs.EOF do
    begin
        //表示用コントロールに項目内容をセット
        ListBox1.Items.Add(rs.Fields[0].Value);
        ListBox2.Items.Add(rs.Fields[1].Value);

        rs.MoveNext;
    end;
    rs.Close;

    cnn.Close;
end;

Ada

PL/SQL

T-SQL

関数型

inserted by FC2 system