Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 18:41   #1
Irehon
 
Регистрация: 07.03.2010
Сообщений: 5
По умолчанию чтение БД из MSSQL Server и сохранения в DBF (Foxpro)

Весь ваш форум перерыл и не мог найти не чего толкового по этому вопросу так что создаю новую тему.
Начну с начало у меня на работе есть сервер MS SQL на нем лежит БД. Я через делфи создаю форму подключаюсь к SQL серверу нормально, вытаскиваю таблицу с данными которые мне нужны и делаю фильтр. Как мне эту таблицу уже отфильтрованную сохранить БД в dbf (FoxPro) формат?
Уже голову слома как это можно сделать программно не как не догоняю, может что посоветуете или в какую сторону копать, а если может у кого есть схожие исходники буду благодарен.
Irehon вне форума Ответить с цитированием
Старый 13.12.2010, 19:05   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

можно просто в цикле перенести все записив таблицу с анологичной структурой

ado(TABLE Query Datasetили какой там у вас датасет пусть будет ADODataSet)
а фокспрошная таблица пусть будет подключена к Table
Код:
var
i:integer;
begin
ADODataSet.first;
While not ADODataSet.EOF do
begin
for i := 0 to ADODataSet.FieldCount-1 do
  table.FieldByName(ADODataSet.Fields[i].FieldName).Assign(ADODataSet.Fields[i]);
ADODataSet.Next;
end;
end;
естественно таблица фокспрошная должна быть с тем же набором полей, и поля должны иметь теже имена,
только нужно проверить набивал тут прямо
vovk вне форума Ответить с цитированием
Старый 13.12.2010, 20:45   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в целом согласен с Vovk

Цитата:
а фокспрошная таблица пусть будет подключена к Table
ну, тут я бы поспорил.. TTable - это использование устаревшей (и не очень надёжной) технологии доступа к данным - BDE

я бы рекомендовал писать в DBF либо через ADO
либо используя компоненты прямого доступа к DBF (например, маленький и бесплатный TDBF, ссылки и примеры использования были тут на форуме)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2010, 04:31   #4
Irehon
 
Регистрация: 07.03.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в целом согласен с Vovk

я бы рекомендовал писать в DBF либо через ADO
либо используя компоненты прямого доступа к DBF (например, маленький и бесплатный TDBF, ссылки и примеры использования были тут на форуме)...
Я с этим компонентом не знаком, можешь набросать как через него делать?

Цитата:
Сообщение от vovk Посмотреть сообщение
можно просто в цикле перенести все записив таблицу с анологичной структурой

ado(TABLE Query Datasetили какой там у вас датасет пусть будет ADODataSet)
а фокспрошная таблица пусть будет подключена к Table

естественно таблица фокспрошная должна быть с тем же набором полей, и поля должны иметь теже имена,
только нужно проверить набивал тут прямо
А если dbf нету,а надо создать как в таком случаи измениться код?

Блогодарю, а то этот вопрос чето меня в тупик поставил.
Завтра на работе попробую потом отпишусь.
А не знаешь как работать с компонентами SQL, а не ADO. Вроде они идентичны но многие говорят что лучше ADO использовать за чего.

Последний раз редактировалось Stilet; 14.12.2010 в 08:50.
Irehon вне форума Ответить с цитированием
Старый 14.12.2010, 08:30   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А если dbf нету,а надо создать как в таком случаи измениться код?
DBF можно создать программно. только структуру надо задать. У Вас есть структура файла, куда Вы собираетесь выгружать данные?

По поводу примеров - а Вы на форуме примеры смотрели? прямо по ключевому слову TDBF и поищите...

Цитата:
А не знаешь как работать с компонентами SQL, а не ADO. Вроде они идентичны но многие говорят что лучше ADO использовать за чего.
Вы путаете понятия. SQL - язык запросов (выборки). ADO - технология получения данных.
запросы SQL можно выполнять и через старую BDE и через новую ADO и используя компоненты прямого доступа к СУБД... в конце концов, задача этих компонентов, передать запрос к ядру СУБД (тот самый SQL/DDL) и получив от СУБД данные (или ответ), вернуть его в программу. Вам стоит почитать книжки...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2010, 17:21   #6
Irehon
 
Регистрация: 07.03.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
DBF можно создать программно. только структуру надо задать. У Вас есть структура файла, куда Вы собираетесь выгружать данные?
Вроде в первом посту написал что надо сохранить в этом формате а не переписать этот фаил. Какая может быть там структура если его нет?

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы путаете понятия. SQL - язык запросов (выборки). ADO - технология получения данных.
запросы SQL можно выполнять и через старую BDE и через новую ADO и используя компоненты прямого доступа к СУБД... в конце концов, задача этих компонентов, передать запрос к ядру СУБД (тот самый SQL/DDL) и получив от СУБД данные (или ответ), вернуть его в программу. Вам стоит почитать книжки...
Посмотри внимательно в delphi там есть SQLConnection1(dbExpress) и ADOConnection1(ADO) если ты там не заметил похожих компонентов то я тут не причем.
Irehon вне форума Ответить с цитированием
Старый 14.12.2010, 20:01   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вроде в первом посту написал что надо сохранить в этом формате а не переписать этот фаил. Какая может быть там структура если его нет?
структуру Вы должны знать. Чтобы создать файл, нужно задать структуру: имена и типы полей, с которыми Вы его создаёте.

впрочем, мне кажется, что Вы прекрасно справитесь с этим и без моей помощи...
я уже всё сказал.


p.s. Кстати, если что, то не стесняйтесь, ко мне можно смело обращаться на Вы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.12.2010, 09:03   #8
Irehon
 
Регистрация: 07.03.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

p.s. Кстати, если что, то не стесняйтесь, ко мне можно смело обращаться на Вы.
Хорошо, буду знать. Если что буду в личку писать.
Irehon вне форума Ответить с цитированием
Старый 20.12.2010, 15:51   #9
Irehon
 
Регистрация: 07.03.2010
Сообщений: 5
По умолчанию

Парни вот еще один вопрос возник при создания и сохранения файла с расширением dbf немогу скопировать структуру бд из sql, не кто не знает как это делаеть?
я вот так пытался но не чего толкового не происходит
Код:
Query1.Close;
Query1.DBSession.PrivateDir;
Query1.SQL.Text := 'create table "test.dbf" (ADODataSet1.FieldDefs)';   --как тут правельно перекинуть структура
Query1.ExecSQL;
или вот такой способ
Код:
with dbf1 do begin
    Dbf1.Close;
    Dbf1.TableName := 'test.dbf';
    DbfGlobals.DefaultCreateCodePage := 866;
    TempFieldDefs := TDbfFieldDefs.Create(Self);
    try
      for i:=0 to ADODataSet1.FieldCount-1 do
      begin
        Application.ProcessMessages;
        with TempFieldDefs.AddFieldDef do
        begin
             FieldName := ADODataSet1.FieldDefs[i].Name;
             //FieldType := ADODataSet1.FieldDefs[i].DataType;         // тут
             //NativeFieldType := ADODataSet1.FieldDefs[i].ParentDef;     // и тут не получаеть
             Size := ADODataSet1.FieldDefs[i].Size;
             Precision := ADODataSet1.FieldDefs[i].Precision;
        end;
      end;
      Dbf1.CreateTableEx(TempFieldDefs);
      Application.MessageBox('Таблица успешно сохранена', 'Сообщение', MB_OK);
    finally
      FreeAndNil(TempFieldDefs);
    end;
  end;
Может кто знает как это можно сделать?
Irehon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение кодовой страницы dbf-файла (foxPro) Ks2010 БД в Delphi 19 13.08.2010 11:33
MSSQL Server>Delphi. Ошибка при добавлении данных POPOV БД в Delphi 1 20.04.2010 21:42
Выгрузка из SQL Server в .DBF файл span4 SQL, базы данных 1 08.06.2009 18:41
из dbf в mssql через delphi kyc0k БД в Delphi 1 22.12.2008 15:25
Проблема кодировки DBF из foxpro djinni БД в Delphi 6 29.01.2008 14:36