![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Интересный глюк с именем таблицы [D7, WinXP]
Варяг © (2006-07-23 16:14:00)HI to all,
Суть глюка следующая : есть папка в ней таблицы ДБаз,
запускаю диалог выбора, получаю путь, отсекаю название таблицы и при выолнение получаю следующее :
##
Project Project1.exe raised exeption class EvariantTypeCastError with message
'Could not convert variant of type(null) into type(string)'. use Stepor Run to
continue.
##
но самое интересное заключается в том, что если делфа не работает ни каких исключений не появляется. мне интересно кто может объяснит это.
полный код привожу ниже (сразу говорю больше нет ни чего, специально для умников утверждающих что "ты где еще в остальном коде напортачил..").
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls;
type
TForm1 = class(TForm)
ADOTable1: TADOTable;
OpenDialog1: TOpenDialog;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Panel1: TPanel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
VAr Str:TStrings;
dbName:String;
begin
Str:=TStrings.Create;
if OpenDialog1.Execute then
Str:=OpenDialog1.Files;
If Str.Strings[0]=#32 then Exit;
dbName:= ExtractFileName(Str.Strings[0]);
ShowMessage(dbName);
ADOTable1.TableName:=dbName;
AdoTable1.Open;
end;
end.
size=20 (2006-07-23 16:22:00) [21]да, еще посмотри чтобы у тебя коллекция полей не была заполенна
size=20 (2006-07-23 16:17:00) [22]
> Str:=TStrings.Create;
>
> if OpenDialog1.Execute then
> Str:=OpenDialog1.Files;
>
> If Str.Strings[0]=#32 then Exit;
> dbName:= ExtractFileName(Str.Strings[0]);
> ShowMessage(dbName);
>
> ADOTable1.TableName:=dbName;
> AdoTable1.Open;
А проще?
if not OpenDialog1.Execute then Exit;
if AdoTable1.Active then AdoTable1.Close;
ADOTable1.TableName:= OpenDialog1.FileName;
AdoTable1.Open;