Вниз
Скачать: CL | DM;

Неполучается создать таблицу   Найти похожие ветки 

 
Dars73 ©   (2008-07-31 02:18) [0]

Доброе время суток.

Имеется кусок программы где программно создаю таблицу dbf с программно присвоенным именем через Компоненту TEdit.
при первом создании все работает на ура. А вот при повторном, даже при смене имени таблицы вылетает ошибка.

после перезапуска программы можно опят один раз создать таблицу.
подскажите где у меня тупой угол.

unit tabbele;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables;

type
 TForm1 = class(TForm)
   Table1: TTable;
   DBGrid1: TDBGrid;
   DBNavigator1: TDBNavigator;
   Button1: TButton;
   Button3: TButton;
   Button4: TButton;
   Edit1: TEdit;
   DataSource1: TDataSource;
   OpenDialog1: TOpenDialog;
   procedure Button1Click(Sender: TObject);
   Procedure sosdanieTabl;
   Procedure PodkluchenieTab;
   procedure Edit1KeyPress(Sender: TObject; var Key: Char);
   procedure Button3Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }

 end;

var
 Form1: TForm1;
 TabNam:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.SetFocus;
end;

Procedure Tform1.sosdanieTabl();
begin
with Table1 do
  begin
  DatabaseName:="";
  TableName:=TabNam;
  TableType:=ttDBase;
  {Создать поля}
  with FieldDefs do
  begin
  Add("Surname", ftString, 30);
  Add("Name", ftString, 25);
  Add("Patronymic", ftString, 25);
  Add("Age", ftInteger, 0, false);
  Add("Weight", ftFloat, 0, false);
  end;
  CreateTable;
  end;
end;

Procedure Tform1.PodkluchenieTab();
begin
Table1.Active:=false;
table1.DatabaseName:="";
table1.TableName:=TabNam;
table1.Active:=true;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if ord (key)=13 then begin
                    TabNam:=Edit1.Text;
                    form1.sosdanieTabl;
                    form1.PodkluchenieTab;
                    end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
opendialog1.InitialDir:="";
opendialog1.Execute;
TabNam:=opendialog1.FileName;
form1.PodkluchenieTab;
end;

end.


 
self.name ©   (2008-07-31 02:37) [1]

:)написали б какую ошибку...
но попробуйте:
Procedure Tform1.sosdanieTabl();
begin
with Table1 do
 begin
 close;  //для первой ошибки
 FieldDefs.Clear;  //для второй =)
 DatabaseName:="";
...

вроде работает. хотя FieldDefs.Clear; можно было бы и не делать, если поля одни и те же, но тогда не нужно делать Add("Surn...


 
dars73 ©   (2008-07-31 03:01) [2]

Спасибо большой все работает.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.017 c
2-1217636950
Res
2008-08-02 04:29
2008.09.14
beginthread


9-1165756032
darkangel
2006-12-10 16:07
2008.09.14
3д мир и клики мышью. (OpenGL)


2-1217424279
@!!ex
2008-07-30 17:24
2008.09.14
Рабочая папка процесса.


15-1216620114
Vlad Oshin
2008-07-21 10:01
2008.09.14
Постоянно в памяти висит процесс WinWord.exe


15-1216990440
Ruzzz
2008-07-25 16:54
2008.09.14
Delphi - это он, она или оно?




   Наверх