Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi - BDE - TQuery - tabuľka v pamäti

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, DBTables;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Query1: TQuery;
  end;

var
  Form1: TForm1;
  Field1: TFloatField;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Query1 := TQuery.Create(Self);
  Field1 := TFloatField.Create(nil);
  Field1.FieldName := 'Cislo';
//  Field1.Size := 5;
  Field1.DisplayWidth := 5;
  Field1.Precision := 2;
  Query1.Fields.Add(Field1);
  Query1.Active := True;
  DataSource1.DataSet := Query1;

  try
    Query1.Append;
    Query1.Fields[0].AsFloat := 10;
    Query1.Post;
  finally
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Query1.Free;
end;

end.

Čo robím zle? Ak povolím riadok Field1.Size, tak dostanem chybu, že je to chybná dĺžka, ak to nepovolím, tak pri Active := True dostanem "No SQL statement available". Keďže je tabuľka vytváraná v pamäti, tak jej fyzické meno neexistuje. Zrejme je chyba niekde v tom. Tiež by ma zaujímalo, čo s tou dĺžkou.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Všetko mi funguje, až na jeden nepochopiteľný detail. Na začiatku sa mi vytvorí tabuľka, ktorá na di…
msx. 21.07.2006 03:39
msx.
Podivné. Já to dělám taky tak: procedure GenKdyzNeni (Tab: TTable; const FN: String20; const lJePoI…
Rce 21.07.2006 11:47
Rce
Ak sa nebojíš mojich kódov, tak ti to asi pošlem. Ja som už nervy s tým stratil. Už som všetky vlast…
msx. 21.07.2006 12:07
msx.
Tak jsem ti před chvílí majlem odpověděl. ;-)
Rce 22.07.2006 00:19
Rce
Síce meškal, ale práve dorazil, idem čítať, ešte raz ďakujem.
msx. 22.07.2006 00:59
msx.
Nemáš za co.;-):-)
Rce 22.07.2006 01:00
Rce
Ďakujem. Pomohlo. A ja si môžem lámať hlavu. Môžem poprosiť o vysvetlenie významu DatabaseName? V he…
msx. 22.07.2006 01:04
msx.
Je to název databáze. V BDE je databáze řešena jako adresář, tudíž zde jde napsat cesta k datům. Je…
Rce 22.07.2006 01:32
Rce
Ďakujem, teraz už toto multirozvláknené vlákno hádam môžem uzavrieť.:-)
msx. 22.07.2006 01:42
msx.
Dobrá. Kdyžtak založ čerstvé vlákno na nový dotaz.:-);-) poslední
Rce 22.07.2006 01:46
Rce

Všetko mi funguje, až na jeden nepochopiteľný detail. Na začiatku sa mi vytvorí tabuľka, ktorá na disku nie je a po ukončený programu ju na disku nájdem aj s obsahom. Po opätovnom spustení programu mi to prejde vetvou then a tabuľka je čistá:

procedure TfrmPhoneBook.FormCreate(Sender: TObject);
begin
  tblPhoneBook.TableName := PrgPath + cPhoneBook;
  if not tblPhoneBook.Exists then
    begin
      tblPhoneBook.CreateTable;
      tblPhoneBook.Close;
    end;
  tblPhoneBook.Open;
end;

DatabaseName som doteraz nastavené nemal, tak som to rýchlo nastavil na 'DBDEMOS', ale správa sa to rovnako.

Podivné. Já to dělám taky tak:

procedure GenKdyzNeni (Tab: TTable; const FN: String20; const lJePoInst: boolean);
{	Tab		:= Zdejší master ke generování						}
{	FN		:= Název tabule								}
{	lJePoInst	:= true - je po instalaci, hlásit generování, false - drží hubu		}
begin
	oBDE.SetDataPath (Tab, FN); // Nastaví Table.Name a Database name - viz modul Rce_BDE co máš
	if lJePoInst then RceInf (nil, 'Vytváří se ' + Tab.TableName); //Jen ukáže před xicht, že se generuje tabulka
	if not Tab.Exists then begin
		Tab.StoreDefs	:= true { Hovno platný, musí to být v Tab's }; // StoreDefs nastav v TTable!!
		Tab.FieldDefs.Clear (); // Důležité, jestliže je tabulka Tab použita po druhé za běhu programu
		Tab.CreateTable (); Tab.Close () {sychr}; 
		Tab.StoreDefs	:= false;
	end
end;

Ďakujem. Pomohlo. A ja si môžem lámať hlavu. Môžem poprosiť o vysvetlenie významu DatabaseName? V helpe je napísané niečo v zmysle, že to určuje alias databázy alebo proste názov s akým vystupuje databáza, ale nerozumiem, čo to má spoločné s cestou.

Je to název databáze. V BDE je databáze řešena jako adresář, tudíž zde jde napsat cesta k datům. Je tu možno také uvést Alias databáze (zástupné jméno, zástupce pro označení toho adresáře), které je nadefinováno v BDE administrátoru (nebo API funkcema BDE - viz můj modul Rce_BDE).

Zpět do poradny Odpovědět na původní otázku Nahoru