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

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.045 c
2-1190353520
timur
2007-09-21 09:45
2007.10.14
как остановить программу


3-1181379653
Девушка
2007-06-09 13:00
2007.10.14
странное поведение interbase?


10-1138175427
Bratskiy
2006-01-25 10:50
2007.10.14
Удаление колонтитулов


3-1181203458
ina65
2007-06-07 12:04
2007.10.14
базы данных


15-1190012820
Layner
2007-09-17 11:07
2007.10.14
Владельцы MS Vista! Запустите прогу Utils, отработает ли у вас





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