Форум: "Прочее";
Текущий архив: 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