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

Вниз

Не открываются .dbf, пока не закрыта создавшая один из них   Найти похожие ветки 

 
Циркуль   (2007-09-25 17:29) [0]

<subj> программа

Собсно, есть некий датасет, который надо выгрузить в формате DBase.

 T := TTable.Create(nil);
 try
     T.TableName := AFileName;
     T.TableType := ttDBase;

     with TQuery.Create(nil) do
     try
       SQL.Text := "create table "" + T.TableName + "" (" + описания_столбцов + ")";
       ExecSQL;
     finally
       Free;
     end;

     T.Open;

     ADataSet.First;
     while not ADataSet.EOF do
     begin
       T.Append;
       CopyFields(ADataSet, T);
       T.Post;
       ADataSet.Next;
     end;

     T.Close;
 finally
   T.Free;
 end;

Все сохраняется, но созданный файл (да и ни один другой *.dbf) нельзя открыть (например DataBase Desctop"ом) пока не будет закрыта программа.
Выдает ошибку "cannot load driver".
Закрываем прогу - все *.dbf начинают без проблем открываться.

Может кто сталкивался с такой фигней ?


 
Циркуль   (2007-09-25 17:33) [1]

"FoxPro" чекнул случайно, MSSQL - оттуда и выдергиваются данные (тоже через BDE), которые сохраняем в dbf.


 
Desdechado ©   (2007-09-25 17:34) [2]

>  T.Open;
В каком режиме открываешь - монопольно?


 
Johnmen ©   (2007-09-25 17:37) [3]

Надо использовать TDatabase. Явным образом....


 
Циркуль   (2007-09-25 17:45) [4]


> В каком режиме открываешь - монопольно?

эээ.... никаких упоминаний о режиме доступа ни в запросе, создающем таблицу, ни в настройках TTable не нашел...


 
Desdechado ©   (2007-09-25 17:48) [5]

TTable.Exclusive to prevent other applications from accessing a Paradox or dBASE table while it is open in this application.


 
Германн ©   (2007-09-25 17:48) [6]


> никаких упоминаний о режиме доступа ни в запросе, создающем
> таблицу, ни в настройках TTable не нашел...
>

TTable.Exclusive


 
Циркуль   (2007-09-25 18:25) [7]

не Exclusive, судя по отладчику...


> Johnmen ©   (25.09.07 17:37) [3]
> Надо использовать TDatabase. Явным образом....


добавил использование TDataBase, настроил алиас в BDE

DB := TdataBase.Create(nil);
try
DB.AliasName = "ExportDBaseAlias";
DB.DataBaseName = "ExportDBase";
T := TTable.Create(nil);
try
    T.DataBaseName := DB.DataBaseName;
    T.TableName := AFileName;
    T.TableType := ttDBase;

    with TQuery.Create(nil) do
    try
      DataBaseName := DB.DataBaseName;
      SQL.Text := "create table "" + T.TableName + "" (" + описания_столбцов + ")";
      ExecSQL;
    finally
      Free;
    end;

    T.Open;

    ADataSet.First;
    while not ADataSet.EOF do
    begin
      T.Append;
      CopyFields(ADataSet, T);
      T.Post;
      ADataSet.Next;
    end;

    T.Close;
finally
  T.Free;
end;
finally
DB.Free
end;


не помогло :(


 
Anatoly Podgoretsky ©   (2007-09-25 19:38) [8]

Циркуль   (25.09.07 17:29)  

Что за винегред из навигационных компонент и SQL


 
sniknik ©   (2007-09-25 20:25) [9]

> Выдает ошибку "cannot load driver".
> ...
> Может кто сталкивался с такой фигней ?
бывает когда пытаешься одновременно работать с BDE и Jet-ом + исам использующий BDE... и они пытаются работать через одни и теже драйвера, с одной и той же папкой/базой.

выход либо работать всегда через чтото одно, либо установить jet-у параметр "использовать свои замены" (BDE=2)

ну а с ODBC ситуация еще хуже, эта "пятая нога" сама в свою очередь использует jet для локальных баз через его исамы, да еще и следя за своими копиями, т.е. тут в к невозможности работать параллельно с BDE/Jet добавляется еще невозможность работы с самим собой (вторым коннектом через ODBC).
проверить можно сделав пару простых программ/форм в которых всего лиш открыть по таблице в разных директориях. т.е. например с такой строкой подключения в одной
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=dBASE Files;DBQ=D:\DB;DefaultDir=D:\DB;DriverId=533;FIL=dBase 5.0;MaxBufferSize=2048;PageTimeout=5;"
и с такой в другой
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=dBASE Files;DBQ=D:\DBF;DefaultDir=D:\DBF;DriverId=533;FIL=dBase 5.0;MaxBufferSize=2048;PageTimeout=5;"
на запуске второй должна появиться ошибка о проблеме загрузки драйверов.
или же у вас очень старый ODBC... (раньше он имел собственные драйвера а не "заглушки")


 
Циркуль   (2007-09-25 20:28) [10]


> Что за винегред из навигационных компонент и SQL


Вопрос имеет прямое отношение к проблеме или к "иделогии написания кода" ? Если первое, то, включив телепатор, нужно думать, что предлагается заменить использование TTable на выполнение нужного кол-ва "insert into ..."? Если второе - "все было написано до нас" :)


 
sniknik ©   (2007-09-25 20:31) [11]

> и следя
= не следя
обписался, смысл в общем в том что jet это как бы одно ядро сколько бы подключений не было (BDE тоже, но у него меньше одновременно открытых сессий ~8-12 до глюка), а ODBC для каждого подключения отдельную копию с подгрузкой драйверов делает и как следствие рушится (в этом случае с "исамными" подключениями) на втором...


 
Anatoly Podgoretsky ©   (2007-09-25 20:31) [12]

> Циркуль  (25.09.2007 20:28:10)  [10]

Возможно прямое, возможно это последствия этого.


 
Anatoly Podgoretsky ©   (2007-09-25 20:35) [13]

В данной солянке могут оказаться драйвера из трех технологий
BDE/JET/ODBC



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

Форум: "Базы";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.04 c
2-1199828877
Артем
2008-01-09 00:47
2008.02.03
Edit.Text преобразовать в WideString


15-1198581847
{RASkov}
2007-12-25 14:24
2008.02.03
Бесплатный сыр:)


2-1200206885
Anion
2008-01-13 09:48
2008.02.03
Проблема запуска Delphi 6


15-1198843903
Wolf
2007-12-28 15:11
2008.02.03
Подскажите какие файлы в проекте отвечают за хранение версии


15-1198825503
Ega23
2007-12-28 10:05
2008.02.03
Есть у кого такой компонентик TXLSFile?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский