Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Работа с TAdoQuery   Найти похожие ветки 

 
исследователь ©   (2007-09-16 12:42) [0]

Помогите, пожалуйста - как сохранить содержимое TADOQuery в файл? Не просто текстовый, а именно во временную таблицу.


 
Anatoly Podgoretsky ©   (2007-09-16 12:47) [1]

> исследователь  (16.09.2007 12:42:00)  [0]

А файл тогда причем?


 
Сергей М. ©   (2007-09-16 12:49) [2]

Самое простое - организовать цепочку TADOQuery <- TDataSetProvider <- TClientDataSet. Тогда требуемое сохранение осуществляется простым вызовом метода TClientDataSet.SaveToFile


 
исследователь ©   (2007-09-16 12:56) [3]

1:
Таблица - это тоже файл, вы не согласны?
2: Это что точнее нужно сделать?


 
Anatoly Podgoretsky ©   (2007-09-16 12:58) [4]

> исследователь  (16.09.2007 12:56:03)  [3]

Конечно не согласен.


 
исследователь ©   (2007-09-16 13:01) [5]


> Anatoly Podgoretsky ©   (16.09.07 12:58) [4]

имелось ввиду ее физическое представление на ЖД. Впрочем, не хочу бессмысленного флейма. Лучше подскажите, как организовать предложенную в [2] связь


 
Сергей М. ©   (2007-09-16 13:05) [6]


> исследователь ©   (16.09.07 13:01) [5]


> ее физическое представление на ЖД


Именно физическое представление таблицы на ЖД и не обязано ассоциироваться с отдельным файлом.


> как организовать предложенную в [2] связь


Справку уже проштудировал ?


 
исследователь ©   (2007-09-16 13:07) [7]


> Именно физическое представление таблицы на ЖД и не обязано
> ассоциироваться с отдельным файлом.

хорошо, хорошо

> Справку уже проштудировал ?

если честно, Using ... ничего не дало. Может, тыкнете, где надо и что надо?


 
Anatoly Podgoretsky ©   (2007-09-16 13:08) [8]

> исследователь  (16.09.2007 13:01:05)  [5]

Например есть база на Акцесс, пишем в ее файл и больше нет базы.
Кроме того понятия файл и база находятся на разных сторонах ринга.


 
исследователь ©   (2007-09-16 13:10) [9]

я вообще про одну табличку говорил)


 
Сергей М. ©   (2007-09-16 13:14) [10]

На форме кроме собственно ADOQuery должны присутствовать компоненты DataSetProvider и ClientDataSet из закладки "Data Access".

Далее настраиваешь:

DataSetProvider.Name <- ClientDataSet.ProviderName
ADOQuery <- DataSetProvider.DataSet


 
исследователь ©   (2007-09-16 13:19) [11]

а если у меня еще и DataSource на форме, и DBGrid? Как их свойства перенастроить?


 
Сергей М. ©   (2007-09-16 13:22) [12]


> исследователь ©   (16.09.07 13:19) [11]


"Перенастроить" на что и зачем ?
Чем не устраивают текущие их настройки ?


 
исследователь ©   (2007-09-16 13:22) [13]

Перенастройку понял. Но вот сохранение не проходит.


 
исследователь ©   (2007-09-16 13:22) [14]


> Чем не устраивают текущие их настройки ?

да я случайно поменял


 
Сергей М. ©   (2007-09-16 13:23) [15]


> сохранение не проходит


Что, так и говорит, мол, "не прохожу" ?)


 
исследователь ©   (2007-09-16 13:25) [16]

просто не сохраняет, ошибки никакие не выводятся. Сохраняю как CDS.SaveToFile("temp.dbf");


 
Anatoly Podgoretsky ©   (2007-09-16 13:25) [17]

Интересно на сколько сотен сообщения терпения хватит.


 
исследователь ©   (2007-09-16 13:27) [18]

А в чем дело? Я сделал что-то неверно?


 
Сергей М. ©   (2007-09-16 13:29) [19]


> temp.dbf


С какого перепугу dbf ?


 
исследователь ©   (2007-09-16 13:31) [20]

А какое, я извиняюсь, расширение, если SELECT с DBF проходит нормально, а сохранить нельзя? Что поставить, .DB? Он тоже не сохранит.


 
Сергей М. ©   (2007-09-16 13:35) [21]


> А какое, я извиняюсь, расширение


А по барабану какое)

Но содержимое файла не будет иметь ничего общего в dbf-форматом.


> если SELECT с DBF проходит нормально


Видишь ли, компоненту ADOQuery глубоко фиолетово, откуда он получил НД - то ли из DBF, то ли еще откуда-либо. За это отвечает ADOConnection. И ни DataSetProvider ни тем более ClientDataset ничего не знают и знать не обязаны ни про какие ADOConnection - они оперируют на уровне DataSet.


 
исследователь ©   (2007-09-16 13:38) [22]

Так а если мне надо сохранить таблицу временную, и уже пофиг в каком формате - главное чтоб потом adoquery смог сделать из нее select - что делать надо? Я об этом и спрашивал с самого начала!


 
sniknik ©   (2007-09-16 13:41) [23]

Сергей М. ©   (16.09.07 12:49) [2]
> Самое простое - организовать цепочку TADOQuery <- TDataSetProvider <- TClientDataSet. Тогда требуемое сохранение осуществляется
> простым вызовом метода TClientDataSet.SaveToFile

нет, самое простое организовать цепочку TADOtDataSet (конец цепочки), тогда требуемое сохранение осуществляется простым вызовом метода TADOtDataSet.SaveToFile...


 
Сергей М. ©   (2007-09-16 13:43) [24]


> Я об этом и спрашивал с самого начала


Где ?!

Ты спросил лишь как сохранить НД в файл, а что ты с ним потом собрался делать с этим файлом - то нам было неведомо вплоть до [22])


> главное чтоб потом adoquery смог сделать из нее select


Зачем ?

Раз ClientDataset сохранил НД в файл, то очевидно что он может и прочитать впоследствии этот файл. См. TClientDataset.LoadFromFile.


 
исследователь ©   (2007-09-16 13:43) [25]

черт. Мне уже не до простоты (внимание, слово написано верно :) ). Просто помогите - 1) не сохраняет ничего 2) можно ли это потом будет использовать в sql-запросе?


 
sniknik ©   (2007-09-16 13:44) [26]

> главное чтоб потом adoquery смог сделать из нее select - что делать надо?
надо писать в базу а не файл, в базу с движком который может выполнить select.

> Я об этом и спрашивал с самого начала!
неееет, ты опрашивал совсем не о том, а о просто сохранении в файл/таблицу. без упоминания возможности работы с ней sql-ем.


 
Сергей М. ©   (2007-09-16 13:44) [27]


> sniknik ©   (16.09.07 13:41) [23]


Ну да).. А завтра он заменит этот TADODataSet на еще каую-нть хрень, а там нет  такой функциональности)


 
исследователь ©   (2007-09-16 13:44) [28]

Ну теперь вот ведомо. SELECT будет нужен, так как из врем. таблицы будет много разных выборок, причем с возможностью показать и таблицу в начальном виде.


 
Сергей М. ©   (2007-09-16 13:47) [29]


> SELECT будет нужен, так как из врем. таблицы будет много
> разных выборок, причем с возможностью показать и таблицу
> в начальном виде


Накой ляд тебе этот SELECT, если ClientDataset имеет св-во OnFilterRecord ?


 
Anatoly Podgoretsky ©   (2007-09-16 13:48) [30]

> sniknik  (16.09.2007 13:44:26)  [26]

Где ни будь к сотому посту, мы это узнаем.


 
исследователь ©   (2007-09-16 13:49) [31]

Не ругайтесь, пожалуйста. Вообще-то это событие.


 
sniknik ©   (2007-09-16 13:50) [32]

> Просто помогите
просто  помочь очень не просто... особенно если тот кому помогают сам не знает что делает. (либо скрывает, что для помогающего одно и тоже)

> 1) не сохраняет ничего
у тебя ошибка в 17й строке

> 2) можно ли это потом будет использовать в sql-запросе?
а то! просто найди sql движок принимающий xml таблицы (возможно и есть такой), и при SaveToFile задай параметр выгружать в xml.


 
исследователь ©   (2007-09-16 13:51) [33]

Хотя я его и не нашел)


 
Сергей М. ©   (2007-09-16 13:52) [34]


> Вообще-то это событие


Вообще-то это именно свойство)


> Хотя я его и не нашел


Мыши съели ?


 
Сергей М. ©   (2007-09-16 13:53) [35]


> Вообще-то это именно свойство


.. фигурирующее в справке как Event


 
исследователь ©   (2007-09-16 13:53) [36]

в написании не ошиблись?

не съели.

Код давать?


 
Сергей М. ©   (2007-09-16 13:56) [37]


> в написании не ошиблись?


Нет.


> Код давать?


Давно пора)


 
исследователь ©   (2007-09-16 13:58) [38]

procedure FillList;
begin
with frmMain do
begin
 cb.Items.Clear;
 while not Q.Eof do
 begin
  if cb.Items.IndexOf(Q.Fields[2].asstring)=-1 then
   cb.Items.Add(Q.FIelds[2].AsString);
  Q.Next;
 end;
 chdir(ExtractFilePath(Application.ExeName)+"..\data\");
 CDS.SaveToFile("temp.bugoga");
 gb.Enabled := True;
end;
end;
- заполнение списка подстанций

часть выборки данных:


  b:=false;
  for i:=0 to cb.Items.Count-1 do
  if cb.Checked[i] then begin b:=true;break;end;
  if not b and (not cbSDate.Checked) then begin
  sSQL := "Select * from temp.dbf";
  showmessage(ssql);
  DBRoutines(sSQL);
  exit;
end;
if not b and cbSDate.Checked then
begin
 sSQL := "Select * from temp.dbf"+
         " where DATE>=#"+SQL_DATE_STRING(dtpFD.date)+"#"+
         " AND FILD39<=#"+SQL_DATE_STRING(dtpTD.Date)+"#";
 showmessage(ssql);
 DBRoutines(sSQL);
 exit;
end;


хлам:

function SQL_Date_String(Date: TDate): string;
var
 OldFormat: string;
 ResultStr: string;
begin
 if Date > 0 then
begin
 OldFormat := ShortDateFormat;
 ShortDateFormat := "yyyy/mm/dd";
  ResultStr := DateToStr(Date);
 ShortDateFormat := OldFormat;
 ResultStr[5] := "/";
 ResultStr[8] := "/";
 Result :=   ResultStr
end
else
Result := "";
// showmessage(result); - проверка преобразованной даты
end;

procedure DBRoutines(s:string);
begin
with frmMain do
begin
 q.Close;
 q.SQL.Clear;
 q.SQL.Add(s);
 q.Open;
end;
end;



Q - TADOQuery, CDS - ClienDataSet, cbSDate  - флажок, позволяющий искать по дате. В таблице дата - это два поля, структура таблиц корявая


 
исследователь ©   (2007-09-16 14:01) [39]

полный код: http://slil.ru/24861476


 
Сергей М. ©   (2007-09-16 14:03) [40]

из всего этого хлама наиболее интересны всего лишь две строчки:

chdir(ExtractFilePath(Application.ExeName)+"..\data\");
СDS.SaveToFile("temp.bugoga");

Если исключения не было, то файл temp.bugoga обязан быть создан по указанному пути с указанным именем и расширением.



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

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.023 c
8-1167946339
joseph
2007-01-05 00:32
2007.10.14
DSPack


15-1189884398
syte_ser78
2007-09-15 23:26
2007.10.14
bde + vista


2-1190120146
stanislav
2007-09-18 16:55
2007.10.14
Работа с байтом и битами


15-1189622431
Инс
2007-09-12 22:40
2007.10.14
Подскажите микросхему


2-1190047625
Johnnnn
2007-09-17 20:47
2007.10.14
TidPop3