.


:




:

































 

 

 

 





, TDataSource (, ) . , . , , . . , DataSource, . . 5.6 :

. 5.6. .

AutoEdit , . true .

DataSet ( ), . " ", . DataSourcel "" "":

 

if (DataSourcel->DataSet == "")

DataSourcel->DataSet = "";

else

DataSourcel->DataSet = "";

, DataSet :

void_fastcall TForm2::FormCreate (TObject *Sender)

{

DataSourcel->Dataset = Forml->Tablel;

Name , . . . , "Clients", DataSet, Name "ClientsSource" .

TDataSource :

OnDdlciC/iange "" .

OnStciteChcinse State . , ( 5.1) MyTable, .

void_fastcall TFormI::StateChange(TObject *Sender)

{

char S[20];

switch (MyTabie->State) {

case dslnactive:

strcpy(S," ");

break;

case dsBrowse:

strcpytS, " ");

break;

case dsEdit:

strcpytS, " ");

break;

case dslnsert:

strcpy(S, " ");

break;

} // S

}

5.1. OnStateChange .

OnUpdateData .

5.2.1.2

. TTable BDE, - , . . 5.7 :

. 5.7. . Active " " . true Open . false ( ) Close .

DatabaseName . : , , . - Aliases BDE.

TableName .

Exclusive , . false .

IndexFiles .

IndexName , (primary key order).

Filter , .

ReadOnly . false .

MasterFields MasterSource ( ) master-detail. BCDEMOS, CUSTOMER ORDERS, : .

IndexName , (primary key order).

Filter , .

ReadOnly . false .

MasterFields MasterSource ( ) master-detail. BCDEMOS, CUSTOMER ORDERS, :

1. File | New Data Module, DataModule2. TTable TDataSource (. 5.8).

2. Tablet

DatabaseName = BCDEMOS TableName = CUSTOMER.DB Name = CustomersTable

. 5.8. .

3. Table2

DatabaseName = BCDEMOS TableName = ORDERS.DB Name = OrdersTable

4. DataSourcel DataSet = CustomersTable Name = CustomersSource

5. DataSource2 DataSet = OrdersTable Name = OrdersSource

6. TDBGrid.

7. File | Include Unit Hdr, , .

8. DBGridI

DataSource = DataModule2->CustomersSource DBGrid2

DataSource = DataModule2->OrdersSource

9. OrdersTable

MasterSource = CustomersSource, CUSTOMER ORDERS.

10. MasterFields,

- CustNo ( ) Available Indexes;

- CustNo Detail Fields Master Fields;

- Add, Joined Fields CustNo -> CustNo;

- OK, .

11. Active = true CustomersTable OrdersTable , .

12. . . 5.9 : , .

 

. 5.9. muster-detail.

Locate Lookup , : . , . BDE .

Locate . , . 5.2 , "" MyTable "". . Locate true, . . Locate false, .

(boot Success;

TLocateOptions Options;

Options loPartialKey;

Success = MyTable->Locate("", "", Options);

}

5.2. Locate.

. :

bool _fastcall Locate(const AnsiString KeyFields, const Variant SKeyValues, TLocateOptions Options);

3 , Variant ( C++Builder Delphi). KeyFields .

Lookup , . . , . 5.3 , MyTable , "" "Borland". . Lookup Variant , . . Lookup Null.

{

Variant Results;

Results = MyTable->Lookup("", "Borland",

";;");

}

5.3. Lookup.

. :

Variant _fastcall Lookup(const AnsiString KeyFields, const Variant sKeyValues, const AnsiString ResultFields);

KeyFields .

TTable :

GotoCurrent , .

First, Next, Prior, Last MoveBy .

SetKey, FindKey, FindNearest, GotoKey GotoNearest .

Append, Insert, AppendRecord InsertRecord . Delete . Edit , a Post .

EditRangeStart, EditRangeEnd, SetRangeStart, SetRangeEnd, ApplyRange SetRange , .

5.2.1.3

, , . TTable , . . TQuery . (result set) , , , , .

SQL (Structured Query Language), , Sybase, Oracle, InterBase SQL Server. Ha SQL . C++Builder , .

. 5.10 :

 

. 5.10. . Active " ", . false .

DatabaseName , .

RequestLive BDE "" . false ( ) , . true , SELECT .

SQL SQL , . SQL: SELECT - ; INSERT -

 

; UPDATE - ; DELETE - . . EMPLOYEE , :

1. TQuery .

2. DatabaseName. BCDEMOS , , , .

3. , SQL

SELECT * FROM EMPLOYEE WHERE Salary>40000 .

4. TDataSource DataSet = Queryl.

5. TDBGrid DataSource = DataSourcel.

6. Active = true Queryl , (. 5.11).

. 5.] ]. .

SQL TStrings . 5.4 ButtonlClick, . SQL ( TStrings) Memol->Lines TMemo. , , .

void_fastcall TFormI::ButtonlClick(TObject *Sender) {

// , - Memol if (strcmp(Memol->Lines->Strings[0].c_str(), "") == 0) (

MessageBox(0, "No SQL Statement Entered", "Error", MB_OK);

return;

} else

(

// , Queryl->Close ();

// SQL Queryl->SQL->Clear ();

// Memol SQL Queryl->SQL->Add(Memol->Lines->Strings[0].c_str());

try

{

Queryl->0pen(); // SQI }

catch(EDBEngineError* dbError).// BDE {

for (int i=0; i<dbError->ErrorCount; i++) MessageBox (0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

}) }

5.4. SQL.

Params , . C++Builder SQL . , . , employee SQL: SELECT * FROM employee WHERE EmpNo =:EmpNo.

(. 5.12), . SQL .

. 5.12. .

Params -. TParams. ^ I terns TParams:;

Queryl->Params->Items[0]->AsInteger = 4;

, ParamByName:

Queryl->ParamFjyName ("FirstName") ->AsString = "John";

5.5 ParamByName . FirstName SQL:

SELECT * FROM EMPLOYEE WHERE FirstName =:FirstName

, Prepare, SQL . , . , , - Open.

void_fastcall TFormI::ButtonlClick(TObject *Sender) {

// , Queryl->Close ();

if (!Queryl->Prepared)

Queryl->Prepare(); // // Queryl->ParamByName("FirstName")->AsString =

Editl->Text.c_str();

try

{

Query 1 ->0pen(); // SQL }

catch(EDBEngineError* dbError) // BDE {

for (int i=0; i<dbError->ErrorCount; i++)

MessageBox(0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

} }

5.5. .

. 5.13 : FirstName .

 

 

 

. 5.13. .

DataSource , , . SQL . , . , CUSTOMER ORDERS CustNo:

1. TQuery TTable

BCDEMOS DatabaseName.

void _fastcall TPormI::DataSource2DataChange(TObject

*Sender, TField *Field) {

// ORDERS ? if (Queryl->DataSource!= NULL)

return; // , // , Queryl->Close();

if (!Queryl->Prepared)

Queryl->Prepare(); // // Queryl->ParamByName("CustNo")->AsInteger =

Tablel->Fields[1]->AsInteger;

try

{

Query 1 ->0pen(); // SQL }

catch(EDBEngineError* dbError) // BDE (

for (int i=0; i<dbError->ErrorCount; i++)

MessageBox(0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

} }

5.6. .

SQL Windows sprintf. (%s, %d, %n ..) , , :

tbIName = "EMPLOYEE";

fIdName = "EmpNo";

fIdValue = 3;

sprintf(sqls, "SELECT * FROM %s WHERE %s = %d", tbIName, fIdName, fIdValue)

sqls :

"SELECT * FROM EMPLOYEE WHERE EmpNo =3"

5.7 sprintf SELECT EMPLOYEE. Clear Add SQL. , , C++Builder SQL (.. false Prepared). .

void _fastcall TFormI::ButtonlClick(TObject *Sender)

{

char sqls[250]; // SQL

char fmts[50]; //

// fmts ,

if (i (strcmp(SalaryEdit->Text.c_str (), " ") ==0)) strcpytfmts, SalaryEdit->Text.c_str());

else

strcpy(fmts, "100000"); //

// ,

Queryl->Close();

// SQL

Queryl->SQL->Clear();

// SELECT sprintf

sprintf(sqls, "SELECT * FROM EMPLOYEE WHERE Salary<%s", fmts);

// SELECT SQL

Queryl->SOL->Add(sqls);

try

{

Query 1 ->0pen(); // SELECT)

catch(EDBEngineError* dbError) // BDE {

for (int i=0; i<dbError->ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), "SQL Error",

MB_OK);,) 1

5.7. SQL sprintf.

. 5.15 : , ( Salary ) .

. 5.15. .

Open ExecSQL SQL . SELECT. select , , . SQL, , UPDATE, , . ExecSQL Open.

5.8 .

: Salary EMPLOYEE BCDEMOS. , UPDATE, , , . --Builder \...\CBuilder\Examples\Data.

void_fastcall TFormI::ButtonlClick(TObject *Sender) {

char sqls[250]; // SELECT char fmts[50]; // int mins, adds; //

// fmts ,

strcpy(fmts, SalaryEdit->Text.c_str());

mins = atoi(fmts);

// SQL

Queryl->Close ;

Queryl->SQL->Clear ();

sprintf(sqls, "SELECT * FROM EMPLOYEE WHERE Salary<%s", fmts);

// SELECT SQL

Queryl->SQL->Add(sqls);

try

{

Queryl->0pen (); // SELECT

} catch(EDBEngineError* dbError) // BDE

{

for (int i=0; i<dbErro-r->ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

}

// fmts [ %],

strcpy(fmts, AddEdit->Text.c_str());

adds = atoi(fmts);

// SQL Queryl->Close ();

Queryl->SQL->Clear();

// UPDATE SQL Queryl->SQL->Add("UPDATE EMPLOYEE set Salary =

(Salary+((Salary*:adds))/100) WHERE (Salary <:mins)");

Queryl->ParamByName("mins")->AsInteger = mins;

Queryl->ParamByName("adds")->AsInteger = adds;

try

{ Queryl->ExecSQL(); // UPDATE

}

catch(EDBEngineError* dbError) // BDE

{

for (int i=0; i<dbError->ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

) // SQL

Queryl->Close ();

Queryl->SQL->Clear();

// SELECT Queryl->SQL->Add(sqls);

try

{

Queryl->0pen (); // SELECT }

catch(EDBEngineError* dbError) // BDE {

for (int i=0; i<dbError->ErrorCount; i++)

MessageBox(0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

} }

5.8. ExecSQL UPDATE.

. 5.16 , mins , adds. , . (. 5.15).

 

. 5.16. .

, :

First, Next, Prior, Last MoveBy .

Append, Insert, AppendRecord InsertRecord . Delete . Edit , a Post .

5.2.1.4

(, , ) - . TStoredProc , , .

, . , . , , .

, - . , , . - - , " " , .

. 5.17 :

 

. 5.17. . Active " ", . false .

DatabaseName .

StoredProcName , .

ParamBindMode , . pbByName ( ) , pbByNumber - .

Params ( ). , , .

 

, , . (Input, Output, Result), , , . -

 
 

, (. 5.18). . Oracle , , . Add, Delete Clear , .

. 5.18. .

, Params TParams. Items TParams:

StoredProcl->Params[0]->Items[1]->AsString = Editl->Text;

, ParamByName:

StoredProcl->ParamByName("_")->AsInteger++;

Prepare :

StoredProcl->Prepare ();

StoredProcl->ExecProc ();

. ( ) Items TParams:

Editl->Text = StoredProcl->Params[0]->Items[0]->AsString;

, ParamByName:

Edit2->Text =

StoredProcl->ParamByName("_")->AsInteger;

(, Sybase) , , , - . TStoredProc , :

1. DatabaseName.

2. TDataSource DataSet = StoredProcl.'

3. TDBGrid DataSource = DataSourcel.

4. TStoredProc .

5. StoredProcName.

6. Active = true StoredProcl , .

7. , ( ) .

5.2.1.5

TDatabase BDE , BDE. . , TDatabase (login), . , , TDatabase , .

. . , . SQL " " , . TDatabase. , , StartTransaction. , , , Commit Rollback () . Commit , Rollback .

. 5.19 :

 

. 5.19. . AliasName , BDE. DriverName.

DatabaseName AliasName DriverName.

DriverName BDE DatabaseName. AliasName.

Params . 5.9 CUSTOMER ORDERS. , EditOld, , EditNew. Databasel , . - - , ( , , , ) . , , . 5.19.

void_fastcall TFormI::ButtonlClick(TObject *Sender) {

char sqls[250]; // SQL try

{

Databasel->StartTransaction ();

Queryl->SQL->Clear ();

// EditOld EditNew CUSTOMER sprintf(sqls, "UPDATE CUSTOMER set Addrl = \"%s\" WHERE (Addrl = \"%s\")", EditNew->Text.c_str(), Edit01d->Text.c_str());

Queryl->SQL->Add(sqls);

Queryl->ExecSQL ();

Queryl->SQL->Clear ();

// EditOld EditNew ORDERS sprintf(sqls, "UPDATE ORDERS set ShipToAddrl = \"%s\" WHERE (ShipToAddrl = \"%s\")", EditNew->Text.c_str(), Edit01d->Text.c_str());

Queryl->SQL->Add(sqls);

Queryl->ExecSQL();

// , Databasel->Commit();

Tablel->Refresh();

Table2->Refresh();

}

catch(EDBEngineError* dbError) // BDE {

for (int i=0; i<dbError->ErrorCount; i++) MessageBox (0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

Databasel->Rollback();

return;

} catch (Exception* exception) //

{

MessageBox (0, exception->Message.c_str (), "Error", MB_OK);

Databasel->Rollback();

return;

) }

5.9. , .

, . 5.20 TDatabase.

. 5.20. .

5.10 , , . , DriverName , ( Editi Edit2). , BDE. SQLPASSTHRU MODE Add, Append Insert , . NOT SHARED , . . , , , , . SHARED NOAUTOCOMMIT SHARED AUTOCOMMIT , . , SHARED NOAUTOCOMMIT NOT SHARED.

void_fasfccall TFormI::ButtonlClick(TObject *Sender) (

char name[20]; // char pass [20]; // try

{

// Databasel->Close();

Databasel->DriverName = "STANDARD";

Databasel->KeepConnection = true;

Databasel->LoginPrompt = false;

Databasel->Params->Add("SERVER NAME=

...\\CBuilder\\EXAMPLES\\DATA\\EMPLOYEE.DB");

Databasel->Params->Add("SCHEMA CACHE=8");

Databasel->Params->Add("OPEN MODE=READ/WRITE");

Databasel->Params->Add("SQLPASSTHRU MODE=NOT SHARED");

sprintffname, "USER NAME=%s", Editl->Text.c_str ());

Databasel->Params->Add(name);

sprintf(pass, "PASSWORD=%s", Edit2->Text.c_str());

Databasel->Params->Add(pass);

// Databasel->0pen();

Tablel->0pen();

}

catch(EDBEngineError* dbError) // BDE

{

for (int i=0; i<dbError->ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), "SQL Error", MB_OK);

})

5.10. .

, BCDEMOS , , , . . 5.21 .

. 5.21. "" .

5.2.2

. DataSource . TDataSource, DataSource.

, Standard Windows , 4 .

TDBNavigator. (. 5.22).

. 5.22. .

First, Prior, Next Last, , Insert, Delete, Edit, Post, Cancel Refresh -

. , . .

. 5.23 :

 

. 5.23. . DataSource . , . DBEditI DBEdit2, CustomersTable OrdersTable CustomersSource OrdersSource, . ( Company DBEditI), CustomersSource, ( OrderNo DBEdit2), OrdersSource. , OnEnter , ( 5.11).

VisibleButtons , , , . / First Last, .

- . , CustomersTable OrdersTable. , Insert, Delete, Edit, Post, Cancel Refresh, - . 5.11 OnEnter .

void_fastcall TFormI:: DBEditlEnter(TObject *Sender) {

if (Sender == DBEditI)

{

DBNavigator->DataSource = CustomersSource;

Set<TNavigateBtn, 0, 9> btnShow;

btnShow nbFirstnbPrior nbNextnbLastnbInsert nbDeletenbEditnbPostnbCancelnbRefresh;

DBNavigator->VisibleButtons = btnShow;

}

else

{

DBNavigator->DataSource = OrdersSource;

Set<TNavigateBtn, 0, 9> btnShow;

btnShow nbFirstnbPriornbNextnbLast;

DBNavigator->VisibleButtons = btnShow;

} }

5.11. DataSource VisibleButtons.

ShowHint , . false ( ) .

Hints . , , .

. 5.24 , .

. 5.24. .

5.3

C++Builder - , , .

, . SQL , .

, C++Builder :

1. (TTable TQuery) Data Access .

2. [15 DataSet ^ (. Table 1 Query 1).

3. Data Controls DataSource (, DataSourcel). DataField. '

4. TDBGrid, TDBNavigator.





:


: 2015-10-01; !; : 374 |


:

:

, - , ; , - .
==> ...

1477 - | 1487 -


© 2015-2024 lektsii.org - -

: 0.31 .