Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Вниз

Интересный глюк с именем таблицы   Найти похожие ветки 

 
Варяг ©   (2006-07-23 16:14) [0]

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:17) [1]


> 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;


 
size=20   (2006-07-23 16:22) [2]

да, еще посмотри чтобы у тебя коллекция полей не была заполенна


 
Anatoly Podgoretsky ©   (2006-07-23 16:27) [3]

Варяг ©   (23.07.06 16:14)  
(сразу говорю больше нет ни чего, специально для умников утверждающих что "ты где еще в остальном коде напортачил..").

Сразу начинаешь с конфликта и еше чего то ждешь?
Может тебе другой форум лучше найти, где естт устраивающие тебя оппоненты.


 
Anatoly Podgoretsky ©   (2006-07-23 16:28) [4]

Код не обсуждаю, поскольку переписать все нафиг


 
KilkennyCat ©   (2006-07-23 16:32) [5]

а код все равно не полный приведен.


 
Anatoly Podgoretsky ©   (2006-07-23 16:41) [6]

KilkennyCat ©   (23.07.06 16:32) [5]
А какая разница, думаю остальное не лучше, да и тратить время на скандалиста нет желания.


 
Варяг ©   (2006-07-23 16:53) [7]

ТО :Anatoly Podgoretsky
Я на форум пришел не оппоненттов искать..
Комментарий на счет "умников", написал специально, чтобы не отвечать на вопросы : а где ты еще к этой переменой обращаешься/может в другой процедуре меняешь значение...
На счет "периписат  все нафиг" - Специально создал новый проект , чтобы не кидать весь рабочий проект(его код и приведен). Изначально код был другой, но глюк тот же
{
If OpenDialog1.execute then
   dbName:=ExtractFilePath(OpenDialog.FileName);
   if dbName=#32 then exit;
   ADoTable1.TableName:=dbName;
   AdoTable1.Open;
}
весь остальной код(см. выше) был поиском правильного решения.


 
Anatoly Podgoretsky ©   (2006-07-23 16:55) [8]

Вот теперь жди пока не умники придут.


 
Варяг ©   (2006-07-23 16:55) [9]

ТО:size=20

Коллекция чистая. а OpenDialog1.tableName возвращает полный путь т.е.
C:\Temp\Work_Dir\db1.dbf и естественно при попытке указать это в имени таблице выдает ошибку...


 
size=20   (2006-07-23 16:56) [10]


> C:\Temp\Work_Dir\db1.dbf

Какой провайдер?


 
Варяг ©   (2006-07-23 16:58) [11]

у меня такое впечатление , что я тебя чем-то разозлил ..
и к стати формум не самое то место-для обид.


 
Варяг ©   (2006-07-23 17:07) [12]

to: size=20  
Provider=MSDASQL.1;Persist Security Info=False;Data Source=test_Alies


 
KilkennyCat ©   (2006-07-23 17:10) [13]

ExtractFileName


 
Варяг ©   (2006-07-23 17:29) [14]

To : KilkennyCa t
спасибо,  :-)
но я его и так использовал.


 
KilkennyCat ©   (2006-07-23 17:31) [15]

ага. из списка.


 
KilkennyCat ©   (2006-07-23 17:33) [16]

я бы недоверил списку, ибо нафиг, если дело только одной таблицы касается, это раз, во-вторых, я не знаю, как это работает, если в свойствах опендиалога не включено мультивыбор, а в приведенном коде не видно, включено или нет...


 
Варяг ©   (2006-07-23 18:36) [17]

ТО:KilkennyCat ©
да на счет мультивыбора, пробывал оба варианта,результат тотже.
если передаю название таблицы через переменную

procedure TForm1.Panel1Click(Sender: TObject);
VAr S:string;
begin
S:="mytest";
ADoTable1.TableName:=s;
ADoTAble1.Open;
end;

все работает -?!
..невольно вспоминаешь анекдот про радиация с Марса.


 
Anatoly Podgoretsky ©   (2006-07-23 18:47) [18]

Варяг ©   (23.07.06 16:58) [11]
Ты сам себя в такое положение поставил, теперь еще и обижаешься.
Сказали жди не умников, значит жди.


 
Anatoly Podgoretsky ©   (2006-07-23 18:50) [19]

Варяг ©   (23.07.06 16:53) [7]
Этот код тоже выбросить, то есть переписать все нафиг.


 
Варяг ©   (2006-07-23 18:57) [20]

ТО:Anatoly Podgoretsky
Объясни нормально, что именно тебя так завело. Если "умники" , то к тебе это не имело ни какого отношения. Ты сам туда себя записал. Если есть что сказать по проблеме пожалуста , выслушаю все предложения, я говорю абсолютно серьезно.
И у меня нет желания препираться в форуме , и все будующие остальные твои замечания  буду игнорировать. :-)


 
Anatoly Podgoretsky ©   (2006-07-23 19:13) [21]

Меня завело, тебе не кажется?
И не приписывай меня к какой либо категории, все равно будет неверно.
Для предложений нет оснований, не той системы гранаты.
Правильное предложение было, переписать все нафиг, поскольку все примеры кода неверные. Умничать и тыкать кодом не буду, сам делай.
Насчет игнорирования, я такого не обещаю, все таки форум и игнорировать не буду, тем более так громко заявлять об этом. Что не говорит о твоем интеллекте, но судья тебе бог, а не я.


 
sniknik ©   (2006-07-23 19:37) [22]

Варяг ©   (23.07.06 18:57) [20]
ты сам начал...
и как показывает практика, такие люди как ты никогда не слушают несмотря на все заверения "выслушаю все предложения"...

и не говори что ты не такой, тебе уже послупило предложение [4] "переписать все нафиг".  абсолютно справедливое кстати. код ужасен, первое что бросается в глаза использование TADOTable... жуткий глюк, и неспользование TADOConnection... не менее ужастный... все, далее обсуждать нечего, единственный выход переписать.

и что же ты? начал огрызаться, вместо того чтобы спросить "как переписать?"
+ пошли разные дополнения/изменения к коду хотя "для умников" сказано что приведен полный код...

на уточнение провайдера отмазка в виде анонимного DSN ODBS...

впечатление или специально нагнетаеш, конфликта ищеш, или не сображаеш в этом ничего. зато ведеш себя как ральпальцованный непризнаный гений... и хочеш серьезного к себе отношения...
ГЫЫЫ, LOL СЫНА LOL!!!  (© народное анекдотное творчество)

кстати, чтобы узнать в чем "проблема" при данном кривом коде (так то этого не должно быть)  и узнать почему работает если не в дельфях, достаточно протрассировать модуль (недолго строк 20 всего, и упираешся в .... except { do nothing } end;, зачем это думаю обьяснять не надо... убрать это можно сняв галочку в настройках дельфей "остонавливаться на ошибке". вообщето я никому не рекомендую этого делать, но тебе можно....)



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

Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.037 c
1-1151329908
Alexey V.
2006-06-26 17:51
2006.08.13
Взаимное влияние D5 и D7


2-1154001896
DprYg
2006-07-27 16:04
2006.08.13
Флаг синхронизации, семафор, событие


2-1153681417
Rav
2006-07-23 23:03
2006.08.13
TFrame: класс TDATETIMEFIELD не найден


2-1153811497
fedpavel
2006-07-25 11:11
2006.08.13
Есть что нибудь почитать


3-1149592041
ceval
2006-06-06 15:07
2006.08.13
Подскажите как сделать вывод базы данных в виде дерева





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский