Просмотр полной версии : Динамическое создание таблицы
Таблица формируется динамически. Необходимо упорядочить строки таблицы по одному из столбцов.
1) Можно ли сформировать таблицу, сразу используя компонент TQuery?
2) Как можно это сделать, если использовать компонет TTable? Есть ли другие возможности, кроме TTable->TDataSource->TQuery->TDataSource?
De-visible
30.03.2008, 22:24
delphi?
Если да то вот:
unit gridcalc;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, DB,
DBTables, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure TaxAmountCalc(DataSet: TDataset);
private
TaxAmount: TFloatField;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.TaxAmountCalc(DataSet: TDataset);
begin
Dataset['TaxAmount'] := Dataset['ItemsTotal'] *
(Dataset['TaxRate'] / 100);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
MyTable: TTable;
MyDataSource: TDataSource;
MyGrid: TDBGrid;
begin
MyTable := TTable.Create(Self);
with MyTable do
begin
DatabaseName := 'DBDemos';
TableName := 'Test.DB';
OnCalcFields := TaxAmountCalc;
with FieldDefs do
begin
Add('ItemsTotal', ftCurrency, 0, false);
FieldDefs[0].CreateField(MyTable);
Add('TaxRate', ftFloat, 0, false);
FieldDefs[1].CreateField(MyTable);
TFloatField(Fields[1]).DisplayFormat := '##.0%';
TaxAmount := TFloatField.Create(MyTable);
with TaxAmount do
begin
FieldName := 'TaxAmount';
Calculated := True;
Currency := True;
DataSet := MyTable;
Name := MyTable.Name + FieldName;
MyTable.FieldDefs.Add(Name, ftFloat, 0, false);
end;
end;
MyTable.CreateTable;
end;
MyDataSource := TDataSource.Create(Self);
MyDataSource.DataSet := MyTable;
MyGrid := TDBGrid.Create(Self);
with MyGrid do
begin
Parent := Self;
Align := alClient;
DataSource := MyDataSource;
end;
MyTable.Active := True;
Caption := 'Новая таблица ' + MyTable.TableName;
end;
end.
Вот ссылка на полную статью _http://www.delphisources.ru/pages/faq/base/create_table_and_fields.html
-----------------------------------------
_http://www.traktat.ru/tr/referats/id.11631.html - реферат на эти компоненты
------------------------------------------
Если Borland C++ Builder:
_http://inprise.narod.ru/cbuilder/archives/bcba/book.cgi_book_cbuilder_i_943366575.html
C++ Builder. А как упорядочить таблицу?
Можно привести код, который формирует таблицу с использованием компонента TQuery?
Попробовал два варианта, но оба выдают ошибку.
Первый вариант:
Query1->Close();
Query1->DatabaseName="c:\\";
Query1->SQL->Clear();
Query1->SQL->Text = "CREATE TABLE \"Table1.db\" (field1 int,field2 int)";
Query1->ExecSQL();
Query1->SQL->Clear();
Query1->SQL->Text = "INSERT INTO \"Table1.db\" (field1, field2) VALUES (10,20)";
Query1->ExecSQL();
Query1->Active = true;
выдает сообщение об ошибке "Error creating cursor handle".
Второй вариант:
Query1->Close();
Query1->DatabaseName="c:\\";
Query1->SQL->Clear();
Query1->SQL->Add("CREATE TABLE \"Table1.db\" (field1 int,field2 int)");
Query1->ExecSQL();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO \"Table1.db\" (field1, field2) VALUES (10,20)");
Query1->Open();
выдает сообщение об ошибке "Insufficient memory for this operation".
o_OBallers
07.04.2008, 13:26
У тебя какой подход к делу если Jet и access то там безошибочно выполняется, только выборка, insert тоже работает, но с ошибками.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot