Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Из Pdox в dbf / 25 сообщений из 26, страница 1 из 2
20.01.2003, 14:36
    #32093416
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
HI

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

Мне нужно выгружать данные для отчета из файлов Pdox в файл dbf, хочется это сделать по нажатии кнопочки..
1.Проверяем есть файл nnn.dbf или нет,
2.Если есть чистим и выгружаем данне,
3.Если нет то создаем и выгружаем.
Несколько примеров или просто советов будет > чем достаточно...
...
Рейтинг: 0 / 0
20.01.2003, 14:50
    #32093439
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Привет. Ты и так всё сам замечательно расписал - всё правильно. Только я не уверен, что CREATE TABLE сработает, и не понимаю, зачем в dbf конвертить... В чём у тебя конкретная проблема с реализацией этого?
Проверку с помощью FileExists или запроса с обработкой исключения, создание файля - надо пробовать. Может команды DDL для несерверных СУБД и не прохаваются, но поробуй CREATE TABLE.
Выгружать - INSERT INTO ... (...) SELECT FROM ...
Удалять - DELETE FROM ...
...
Рейтинг: 0 / 0
20.01.2003, 17:42
    #32093596
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Gold

Спаибо конечно но.....
Дело в том, что для начала хотелось бы проверку сделать на наличие файла *.dbf
Как определить файл имеет место быть или нет, а далее все проистекающее т.е.
либо
Код: plaintext
CREATE TABLE... & DELETE FROM ... &  INSERT INTO ...

либо
Код: plaintext
DELETE FROM ... &  INSERT INTO ... (...) SELECT FROM ... 
...
Рейтинг: 0 / 0
20.01.2003, 17:48
    #32093599
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
if FileExists('Путь/имя.dbf') then
может такое понравиться
...
Рейтинг: 0 / 0
20.01.2003, 17:57
    #32093602
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Voha
Всё понял , в шары долблюсь все же почти по русски написано у Gold было....
прошу прощение
И СПАСИБО ОГРОМНОЕ
...
Рейтинг: 0 / 0
20.01.2003, 20:13
    #32093664
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
После продолжительного биения головой о стены пол и потолок включительно результат на лицо....

1. Проверку на наличие файла осуществляет
2. С руганью но данные в созданный файл заносит

Но тут то вот и возникает ещё один нюанс про возможность которого я напрочь забыл это кодировка создаваемого файла????.....
Дело в том, что если файл создается то по умолчанию там кодировка rus866 в результате абра-кадабра. А если его почистить то кодировка меняется на 'ascii'ANSI и тоды усе в порядке.....
Подскажите можно ли задать кодировку создаваемому файлу??....
И если не трудно подкорректируйте код....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
procedure TForm1.Button1Click(Sender: TObject);
var
pr1, pr2 : String; 
begin
{   If  FileExists ('nnn')=true then
   begin
   QReport.SQL.Clear;
   QReport.SQL.Add('DELETE from nnn');
   QReport.Open;
   QReport.Close;
   //Запрос сокращен для отладки (не используется)
  pr1 := 'fam';//'fam, im, otch, birth_day, city, home, n_krp, n_kv';
  pr2 := 'category, name_doc, ser_doc, n_doc, day_v_doc, validity, name_serv
         , nmonth, tarif, privilege, value,full_cost, sum_priv, n_day_term
         , e_day_term, cnt, low';}
{  QReport.SQL.Clear;
//  QReport.SQL.Add('INSERT INTO nnn SELECT '''+pr1+''', account, '''+pr2+''' 
//FROM Base, Account, Lgota where base_id=base_id');
  QReport.Open;
  QReport.Close;
  end
   else begin
   //Создание таблицы
{   Table1.Active := false;
   Table1.DatabaseName := 'AKT';
   Table1.TableName := 'nnn';
   Table1.TableType := ttDbase;
   Table1.FieldDefs.Clear;
   Table1.FieldDefs.Add('fam', ftString,  20 , false);
   Table1.CreateTable;
   Table1.Active := True;}
//Запрс используемый для отладки
  pr1 := 'fam';//'fam, im, otch, birth_day, city, home, n_krp, n_kv';
 { pr2 := 'category, name_doc, ser_doc, n_doc, day_v_doc, validity, name_serv
         , nmonth, tarif, privilege, value,full_cost, sum_priv, n_day_term
         , e_day_term, cnt, low';}
  QReport.SQL.Clear;
//  QReport.SQL.Add('INSERT INTO nnn SELECT '''+pr1+''', account, '''+pr2+''' 
//FROM Base, Account, Lgota where base_id=base_id');
  QReport.SQL.Add('INSERT INTO nnn SELECT fam FROM base' {where base_id=base_id'});
  QReport.Open;
  QReport.Close;
  end;
//end;
...
Рейтинг: 0 / 0
20.01.2003, 20:58
    #32093675
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Если запрос не возвращает набора, то вроде должно быть не Open-CLose, а Exec.
...
Рейтинг: 0 / 0
21.01.2003, 09:09
    #32093748
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
QReport какой алиас стоит? тотже что и в Table1?
если да то какой драйве языка указан на DBase? (DBE)
...
Рейтинг: 0 / 0
21.01.2003, 13:52
    #32094024
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
ОК thank you
понял где порыть проверю...
...
Рейтинг: 0 / 0
21.01.2003, 14:14
    #32094042
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Cat2

Ты как всегда оказался прав заменил Open/Close на Exec ругаться при выгрузке перестал, все работает на Ура. Хотя в чём разница м/у Open/Close и Exec НЕ ПОНИМАЮ????.....

И ЕЩЁ раз СПАСИБО
...
Рейтинг: 0 / 0
21.01.2003, 14:22
    #32094052
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
F1-может там написана в чем разница :-)
...
Рейтинг: 0 / 0
21.01.2003, 21:37
    #32094335
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Давно я с BDE не работал...

Но вроде так.

Пример содран из help'а. На применение TBatchMove.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TForm1.Button1Click(Sender: TObject);

begin
  if Query1.Active = False then
    Exit;
  if SaveDialog1.Execute then
    begin
      Table1.TableName := SaveDialog1.FileName;
      with BatchMove1 do
        begin
          Source := Query1;
          Destination := Table1;
          Mode := batCopy;
          Execute;
          ShowMessage(IntToStr(MovedCount) + ' records copied');
        end;
     end;
  end;


Так вот, если у Table1 в свойстве TableName явно указать расширение "DBF", то и получится DBF-файл.
...
Рейтинг: 0 / 0
22.01.2003, 19:02
    #32094903
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Господа простите за СЕРОСТЬ но как выясняется условие
Код: plaintext
If  FileExists ('nnn')=true then

в том виде в котором представленно у меня и в иных вариантах
Код: plaintext
1.
If  FileExists ('nnn') then
If not FileExists ('nnn') then

работать не хочет.....

ПОЧЕМУ????....
...
Рейтинг: 0 / 0
22.01.2003, 19:15
    #32094909
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
а что у тебя подразумевается под FileExists ('nnn')
помоему 'nnn' ну уж ни как не похоже на путь к файлу
мне больше нравиться
if FileExists ('C:\Program Files\Borland\Delphi6\Projects\Диспетчерская\nnn.gdb') then
.......

путь четко к файлу укажи. Или нажми F1, говорят тоже иногда помогает:-)
...
Рейтинг: 0 / 0
22.01.2003, 19:46
    #32094924
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Voha
Вот я тупень конечно же он только по имень файл найти не может...
СПАСИБО

И ещё вопрос в дагонку пока ты не исчез
Я знаю про два способа создания таблиц (файлов)
1. Это приведён в верху в коде с использованием
Код: plaintext
Table1.CreateTable;

компонента Table1 (что менее приемлемо)
2. Это ч/з SQL запрос
Код: plaintext
QReport.SQL.Add('CREATE TABLE nnn (fam char(20))');

что более приемлемо. Но в данном случае я сталкиваюсь с тем что не могу диктавать формат создаваемого файла, а по умолчанию создается Pdox т.к. я работаю с Pdoxовской базой, а мне данные выгрузить в dbf надо....
Может подскажешь???.....
...
Рейтинг: 0 / 0
23.01.2003, 11:43
    #32095083
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
когда я работал с пародоксовыми базами сосздавал как в хелповом примере, четко работало. Ну вот примерчик (а лучше почитай хелп):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
EmpBase:=True;
if DMBases.TableAccount.Exists then // проверчка есть или нет базы
begin
   if MessageDlg('Очистить базу плана счетов?', mtConfirmation,      //спрашиваем
                [mbNo,mbYes], 0 ) = mrYes then EmpBase := True
   else EmpBase := False
end;
if EmpBase then //и погнали поля
begin
  with DMBases.TableAccount do begin
    Active := False;
    DatabaseName := AliasAccount;
    TableType := ttParadox;
    TableName := 'PlanAccount';
    with FieldDefs do begin // поля
      Clear;
      with AddFieldDef do begin
        Name := 'Kod';
        DataType := ftString;
        Size :=  5 ;
      end;
      with AddFieldDef do begin
        Name := 'Name';
        DataType := ftString;
        Size :=  150 ;
      end;
        //индксы
      with IndexDefs do begin
        Clear;
        with AddIndexDef do begin
          Name := '';
          Fields := 'Kod';
          Options := [ixPrimary];
        end;
        with AddIndexDef do begin
          Name := 'KodIdx';
          Fields := 'Kod';
          Options := [ixCaseInsensitive];
        end;
         with AddIndexDef do begin
          Name := 'NameIdx';
          Fields := 'Name';
          Options := [ixCaseInsensitive];
        end;
     end;
    end;
    CreateTable;
  end;
end;



попробуй так
...
Рейтинг: 0 / 0
24.01.2003, 07:58
    #32095639
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Voha

СПАСИБО конечно... Мне любой опыт не без интересен, узнаю новые подходы.
Но или ты не внимательно вопрос прочитал или я баран, (что более вероятно, т.к. неоднократно в этом убеждался), но хотелось бы создавать базу с помощью SQL запроса
Код: plaintext
1.
QReport.SQL.Clear;
QReport.SQL.Add('CREATE TABLE.... ')

как это должно выглядеть что бы получился dbf файл???

NEW PROBLEM

В чем разница м.у созданием файла на локасьном п.к. и в сети?
Дело в том, что дома нормально создаютя
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
   //Создание таблицы
   Table1.Active := false;
   Table1.DatabaseName := 'AKT';
   Table1.TableName := 'nnn';
   Table1.TableType := ttDbase;
   Table1.FieldDefs.Clear;
   Table1.FieldDefs.Add('fam', ftString,  20 , false);
   Table1.CreateTable;
   Table1.Active := True;

та же прога на работе упирается.. точнее она создает файл но какойто кривой при попытке его открыть П.К. ругается
...
Рейтинг: 0 / 0
24.01.2003, 08:35
    #32095646
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
А какой драйвер БД у тебя указан на алиасе 'AKT'?
может в этом причина, у тебя основные базы парадокса, а создаешь dbf и при помощи прадоксового драйвера хочешь открыть.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
//Создание таблицы
   Table1.Active := false;
   Table1.DatabaseName := 'AKT';!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   Table1.TableName := 'nnn';
   Table1.TableType := ttDbase;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   Table1.FieldDefs.Clear;
   Table1.FieldDefs.Add('fam', ftString,  20 , false);
   Table1.CreateTable;
   Table1.Active := True;


Там разница помоему в работе под сетью с Paradox и DBase.
В БДЕ Администраторе указ NET DIR для парадоксового драйвера?.
Почитай про TSession.

Р.S
А вопросик я в натуре не правильно понял.
Если опять не правильно понял, то извеняюсь.
...
Рейтинг: 0 / 0
24.01.2003, 09:43
    #32095680
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
1. Вобще хотелось обойтись без Table одним Query....
2. Почемуто на работе глюки с созданием ч/з Table
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
   //Создание таблицы
   Table1.Active := false;
   Table1.DatabaseName := 'AKT';
   Table1.TableName := 'nnn';
   Table1.TableType := ttDbase;
   Table1.FieldDefs.Clear;
   Table1.FieldDefs.Add('fam', ftString,  20 , false);
   Table1.CreateTable;
   Table1.Active := True;

пишу таблицу создает что на локальном диске, что в сети но... когда пытаюсь открыть (любым менежером, файловым) ругается говорит (Field name missing) что нет имени поля... в то время как дома нормально работает... (Что дома что на работе все 1:1) ....
Что за дела не монимаю? Целыми сутками на работе бьюсь толку 0........
...
Рейтинг: 0 / 0
24.01.2003, 10:23
    #32095702
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
ICQ есть?
Давай выходи на связь. если есть
...
Рейтинг: 0 / 0
24.01.2003, 19:14
    #32096212
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Перенеси свой домашний IDAPI.cfg на работу. Проверь, что бы он стоял по умолчанию. Проверь, какой язык стоит у тебя основным дома и на работе.

Не создавай таблицы средствами дельфи. Это для америкосов придумано.

Иногда я применял такой способ. Создавал template таблиц и делал нужные таблицы на их основе. Через BatchMove.
=========
Сдохнешь ты с этим DB через BDE. У меня уже бета версия пашет, а ты все телюпкаешся.
...
Рейтинг: 0 / 0
24.01.2003, 19:54
    #32096225
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Cat2

Ок
Буду пробовать BatchMove - хотя представления не имею что это такое, будем читать, мне ещё Voha ссылок на тыкал, дык пока от инфы крыша дымится....

И спасибо за совет.
...
Рейтинг: 0 / 0
25.01.2003, 10:26
    #32096294
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Cat2

Нонсенс какой то перенос IDAPI.cfg не помог..... но с утра на меня снизашло озарение....
Оказалось что на остальных машинках (на работе, в локале- под сеть) прога пашет только уши заварачиваются и только на моём упирается.... что за дела???
...
Рейтинг: 0 / 0
25.01.2003, 16:00
    #32096312
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Ну так надо смотреть локальные настройки компа. Особо часто встречается вариант, когда на компе стоит в качестве десятичного разделителя запятая. Нужно точку. Во всяком случает для ADO, про BDE уже точно и не упомню. Могут быть проблемы и с форматом даты.
Во. Еще вспомнил. Разделитель групп разрядов посмотри. Был у меня случай, когда в запрос целые числа включались в виде ..., 1,234 , ...
...
Рейтинг: 0 / 0
25.01.2003, 17:22
    #32096331
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Pdox в dbf
Cat2
ОК thank you
мысль ясна буду рыть...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Из Pdox в dbf / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]