Пару питань щодо збереження інформації з - dataset

Пару питань щодо збереження інформації з # 032; DataSet.

У мене така проблема: я не знаю, як зберегти інформацію з DATAset "а в табличний файл. Може етого і не потрібно робити (тобто файл бази даних * .gdb можна прочитати якийсь програмою, але наприклад Access його не розуміє.) Єдине , що мені підказали - качати інформацію з МЕМО, а потім зберігати вже як текст. Але ж це вже не таблиця, та й код такого скачування - поганий, тому що інформація з останнього поля завжди пишеться з нового рядка, не зрозумію чому. а якщо поставити вцикле to DataSource1.DataSet.Fields.Count + 1, то помилка, мовляв неможливо велике количес у полів, допоможіть будь ласка:
Memo1.Clear;
DataSource1.DataSet.First;
while not DataSource1.DataSet.Eof do
begin
s: = "";
for i: = 0 to DataSource1.DataSet.Fields.Count - 1 dos: = s + "" + DataSource1.DataSet.Fields [i] .AsString + "" + "";
if 0 <> Length (s) then
Delete (s, Length (s), 1);
Memo1.Lines.Add (s);
DataSource1.DataSet.Next;
Application.ProcessMessages;
end;
if SaveDialog1.Execute then begin
Memo1.Lines.SaveToFile (SaveDialog1.FileName);
end;

Відкрий простий текстовий файл і працюй з ним.


F1: TextFile
.
AssignFile (F1, "MyFile.txt");
Rewrite (F1);
Append (F1);
while not DataSource1.DataSet.Eof do begin
s: = "";
for i: = 0 to DataSource1.DataSet.Fields.Count - 1 do s: = s + "" + DataSource1.DataSet.Fields [i] .AsString + "" + "";
//
Writeln (F1, s);
end;
Flush (F0);
CloseFile (F1);
Приблизно так, якщо чого наплутав, см. Доку.

Та ні, символу немає і дивлюся я звичайним Вордом, або бюлокнотом, або Ексель - всюди один і той же прикол. А символу перекладу рядка там немає. Може все таки в цикл проблема?

До речі, у тебе є ідеї з приводу того, що не можна прочитати просто файл * .gdb якийсь прогой, адже в літку файлі і є будь-які зміни, і вже у вигляді таблиці.

Ось що працює процедура для виведення Dataset в файл - ніяких переходів останнього поля на інший рядок немає.

procedure SaveDSToFile;
var
F1: TextFile;
s: string;
i: integer;
begin
AssignFile (F1, "MyFile.txt"); // пишеш потрібні ім'я та шлях до файлу
Rewrite (F1);
Append (F1);
DataSet.First;
while not DataSet.Eof do begin
s: = "";
for i: = 0 to DataSet.Fields.Count - 1 do
s: = s + DataSet.Fields [i] .AsString + "";
Writeln (F1, s);
DataSet.Next;
end;
Flush (F1);
CloseFile (F1);
end;

В * .gdb таблиці не зберігається в табличному вигляді. Хто тобі сказав таке? Хочеш конвертнуть * .gdb в * .mbd? Користуйся datapump-му.

До речі можна зробити і по іншому: змінювати не саме домен, а рядок s. Ось по етому і з'явився ще питання: як вписати в твою прогу цикл, щоб він заміняв два пробілу на один і виконувався до тих пір, поки не залишаться відстані лише по одному пробілу? Ось, що я зробив:
AssignFile (F1, "MyFile.txt");
Rewrite (F1);
Append (F1);
while not DataSource1.DataSet.Eof do begin
s: = "";
for i: = 0 to DataSource1.DataSet.Fields.Count - 1 do s: = s + "" + DataSource1.DataSet.Fields [i] .AsString + "";
for i: = 1 to length (s) do if s [i] = "" then s [i]: = "";
Writeln (F1, s);
end;
Flush (F1);
CloseFile (F1);

Це не вирішує проблшеми. На жаль. А якщо писати в таблицях Парадокс, то потім ці таблиці можна буде прочитати Ексель? Якщо не можна, то підкажи де саме варто писати базу даних. А то створювати макрос в Ворді - я не вмію, та й замовник сказав, що потрібна таблиця.

Наскільки я пам'ятаю, Ексель Новомосковскет парадоксовскіе бази. А ти сам спробуй - і дізнаєшся :)

і взагалі, хоче замовник бачити все в табличному вигляді, нехай ставить собі IBExpert і роздивиться!

Добре, а як тоді зберегти інформацію з DataSet "а, в табличному вигляді? Тобто, що б потім юзер міг без всяких проблем прочитати етот файл Ексель. Я можу звичайно циклу скачувати інформацію з бази даних, і заганять її в МЕМО, але тоді це буде текстова інформація, а потрібно, що б відразу все йшло в таблицю, і створювався табличний файл, який можна потім буде прочитати Ексель, або Аксес. і взагалі то я думав раніше, що з етім проблем не буде, я вважав, що файли баз даних Аксес і так розуміє ... До сати, що це за IBExpert, і скільки він займає місця ?

На фіг тобі інформація з датасета?

Візьми EhLib (DBGridEh), у нього є функція експорту даних в формати txt, html, xls, rtf, csv, Windows clipboard. При чому не тільки всіх даних, а наприклад (параметр функції експорту TRUE / FALSE) виділеного фрагмента. При цьому дані імпортуються разом з форматуванням (наприклад, якщо у гріда бакгроунд жовтий, шрифт зелений, а заголовки гріда сині з фіолетовим шрифтом).
На виході отримаєш файл потрібного тобі формату в такому вигляді, як вигладел ДБГрід під час роботи твоєї програми і нехай собі Клінт на нього роздивиться.

Я думаю, що брати нові компоненти - це погана робота. Адже Ексель Новомосковскет файли * .dbf, підкажіть, як зберігати базу даних в Paradox не в формат * .db. а в форматі * .dbf, і тоді проблема буде вирішена. До речі, просто заради інтересу, звідки я можу завантажити DBGridEh, всю цю бібліотеку? Вона входить в СD з Делфі?

Excel, принаймні XP, дууже навіть легко відкриває * .db

> Може етого і не потрібно робити
Може і так? Навіть швидше за все. 8-)

> Файл бази даних * .gdb можна прочитати якийсь програмою
Навіть напевно не одного, можна навіть своєї власної.

> Але наприклад Access його не розуміє
І навіть тупий Оракл не зрозуміє 8-)

> Єдине, що мені підказали - качати інформацію з МЕМО, а потім зберігати вже як текст
Хто підказав? Так ти можеш таки качати інформацію - як? У МЕМО - так це і програма то твоя значить, раз ти мемо компоненти додаєш? Тоді чому не подобається грід - таблиця яку твій замовник може споглядати на власні очі скільки завгодно.

У чому взагалі проблема то? Ти що взагалі займаєшся? Навіщо качати інфу з однієї бизи в іншу або ще кудись, щоб подивитися її в табличному вигляді?

У ліщина. Однозначно. )

Пам'ять: 0.77 MB
Час: 0.062 c

Схожі статті