Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Ошибка в подключении к dbf


Автор: kulikoff 14.7.2006, 14:47
Есть такая процедура:
Код

procedure TForm3.sBitBtn3Click(Sender: TObject);
begin
  Table1.Close;
  if sOpenDialog1.Execute then
    begin
      Table1.TableName:=sOpenDialog1.FileName;
      Table1.TableType:=ttDBase;
      Table1.Active:=true;
      sDateEdit1.Visible:=true;
      Label1.Visible:=true;
      sLabel1.Visible:=true;
      sLabel2.Visible:=true;
      sBitBtn2.Visible:=true;
      sBitBtn3.Visible:=false;
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Text:='select * from '+sOpenDialog1.FileName;
      Query1.Open;
    end;
end;


При выполнении выдает ошибку:
Код

Token not found. Token : D

Что это и как с ним бороться? 

Автор: Palladin 14.7.2006, 19:37
Я точно не знаю, но помойму вначале должно идти Query1.Open; а уже потом Query1.close; smile 

Код

procedure TForm3.sBitBtn3Click(Sender: TObject);
begin
  Table1.Close;
  if sOpenDialog1.Execute then
    begin
      Table1.TableName:=sOpenDialog1.FileName;
      Table1.TableType:=ttDBase;
      Table1.Active:=true;
      sDateEdit1.Visible:=true;
      Label1.Visible:=true;
      sLabel1.Visible:=true;
      sLabel2.Visible:=true;
      sBitBtn2.Visible:=true;
      sBitBtn3.Visible:=false;
      Query1.Open;
      Query1.SQL.Clear;
      Query1.SQL.Text:='select * from '+sOpenDialog1.FileName;
      Query1.Close;
    end;
end;


P.S. Может и не работать smile   

Автор: Golden Hands 15.7.2006, 00:00
Для начала попробуй так:

Код

Query1.Active:=False;
Query1.SQL.Clear;
Query1.SQL.Add('...');
Query1.Active:=True;



А вообще
Цитата
Обязательно указание:

2. Способа доступа (ADO, BDE и т.д.)
 

Автор: kulikoff 17.7.2006, 09:02
спасибо за помощь! Нашел ошибку, там с кавычками намутил smile . Правильно было так:
Код

      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Text:='select * from"' + Table1.TableName +'"';
      Query1.Open;


А по поводу указания способа доступа, просто решил, что раз пишу просто Query - наверное понятно, что BDE. Ведь для ADO пишется ADOQuery, или это не всегда так? 

Автор: Ramin 17.7.2006, 09:49
Цитата(RooR @ 14.7.2006,  19:37)
Я точно не знаю, но помойму вначале должно идти Query1.Open; а уже потом Query1.close; smile 

Код

procedure TForm3.sBitBtn3Click(Sender: TObject);
begin
  Table1.Close;
  if sOpenDialog1.Execute then
    begin
      Table1.TableName:=sOpenDialog1.FileName;
      Table1.TableType:=ttDBase;
      Table1.Active:=true;
      sDateEdit1.Visible:=true;
      Label1.Visible:=true;
      sLabel1.Visible:=true;
      sLabel2.Visible:=true;
      sBitBtn2.Visible:=true;
      sBitBtn3.Visible:=false;
      Query1.Open;
      Query1.SQL.Clear;
      Query1.SQL.Text:='select * from '+sOpenDialog1.FileName;
      Query1.Close;
    end;
end;


P.S. Может и не работать smile

 smile  smile  ну черт ты даёш! сперва клозе потом опен  smile  smile  

Автор: kulikoff 17.7.2006, 10:02
не, так правильно, что сначала закрываю запрос. Просто до этого он может висеть открытым, я его закрываю, очищаю (не закрытый - фиг почистишь) и потом уже открываю с новым текстом.
Это я в книге умной какой-то читал smile  

Автор: Ramin 17.7.2006, 10:08
Цитата(kulikoff @ 17.7.2006,  10:02)
не, так правильно, что сначала закрываю запрос. Просто до этого он может висеть открытым, я его закрываю, очищаю (не закрытый - фиг почистишь) и потом уже открываю с новым текстом.
Это я в книге умной какой-то читал smile

пост был не для тебя а для RooR ... он сперва открывает потом закрывает  smile 

Цитата

  Query1.Open;
    Query1.SQL.Clear;
    Query1.SQL.Text:='select * from '+sOpenDialog1.FileName;
   Query1.Close;



2 kulikoff а ты вдруг не тот кто сидит на www.sql.ru ? 

Автор: kulikoff 17.7.2006, 10:18
не, точно не я smile  А что, кто-то под меня косит?  

Автор: Ramin 17.7.2006, 10:24
http://www.sql.ru/forum/memberinfo.aspx?mid=47297

например я там бываю http://www.sql.ru/forum/memberinfo.aspx?mid=32827 

Автор: kulikoff 17.7.2006, 11:31
Всё, разобрался, кто это и что. В общем, можно сказать, что и я, вернее, один чел тут от моего имени там выступает. Но теперь я буду. Спасибо, что указали, вобще, мир - тесен, но и Инет, оказывается тоже. Он сейчас очень удивлен, откуда я узнал smile  smile  

Автор: Frees 17.7.2006, 12:34
вот ответ правельный код, вроде работает
Код

  Table1.Close;
  Query1.Close;
  if sOpenDialog1.Execute then
    begin
      Table1.TableName:=sOpenDialog1.FileName;
      Table1.TableType:=ttDBase;
      Table1.DatabaseName:=ExtractFilePath(sOpenDialog1.FileName) ;
      Table1.TableName:=ExtractFileName(sOpenDialog1.FileName);
      Table1.Open;
      Query1.SQL.Clear;
      Query1.DatabaseName:=ExtractFilePath(sOpenDialog1.FileName) ;
      Query1.SQL.Text:='select * from '+ExtractFileName(sOpenDialog1.FileName);
      Query1.Open;
    end;
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)