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

Вниз

из базы данных в EXEL   Найти похожие ветки 

 
Alex17   (2005-06-21 18:52) [0]

Всем привет, пожалуйста, скажите, как мне из базы данных в которой я не знаю скока строк и столбцов перенести всё в EXEL.
есть две разные базы dbf и paradox дайте, пожалуйста, пример для обеих.


 
YurikGL ©   (2005-06-21 18:54) [1]

Сначала программно узнаешь сколько таблиц, полей и записей... потом по очереди переносишь в excel. А можно и запросом.
А еще можно через буфер попробовать перенести...

Так что пиши с каким их шагов у тебя проблема...


 
YurikGL ©   (2005-06-21 18:55) [2]

>их шагов

из шагов


 
Alex17   (2005-06-21 18:59) [3]

Извените но я с базами толко начил позновать и толком не врубаюсь как это точно делать если вам не дайтепримеры для dbf и paradox пожалуйста.


 
Alex17   (2005-06-21 19:06) [4]

Удалено модератором


 
Alex17   (2005-06-21 19:34) [5]

У меня проблема с определением скоко солбцов и строк в базе а затем перенос в  EXEL


 
ANB ©   (2005-06-21 19:53) [6]

Нужен общий подход (DBF и Paradox), или можно по отдельности ?


 
ANB ©   (2005-06-21 19:58) [7]

Вот это - для DBF. Читаешь в TRDBFHeader начало файла DBF - имеешь инфу о таблице, т.е. количество полей и строк. Затем читаешь описание полей в TRDBFField - и имеешь имена полей.

type
TRDBFHeader = record
 Descriptor : Byte;
{0x03(3)простая таблица
 0x04(4)простая таблица
 0x05(5)простая таблица
 0x43(67)с мемо-полем .dbv
 0xB3(179)с мемо-полями .dbv .dbt
 0x83(131)с мемо-полем .dbt
 0x8B(139)с мемо-полем .dbt формат D4
 0x8E(142)SQL-таблица
 0xF5(245)с мемо полем .fmp}
 updYear : Byte;
 updMonth : Byte;
 updDay : Byte;
 RecordsCount : LongWord;
 HeaderSize : Word;
 RecordSize : Word;
 Reserv1 : Word;
 InTransaction : Byte;
 InCrypt : Byte;
 MultiUser : array [1..12] of Char;
 UseIndex : Byte;
{0x01 Используется индекс
 0x00 Индекс не используется}
 LangDriver : Byte;
{      n  Номер драйвера языка
 0x01(1)  кодовая страница 437 DOS USA
 0x02(2)  кодовая страница 850 DOS Multilang
 0x26(38) кодовая страница 866 DOS Russian
 0x57(87) кодовая страница 1251 Windows ANSI
 0xC8(200)кодовая страница 1250 Windows EE
 0x00(0)  игнорируется}
 Reserv2 : Word;
end;

TRDBFField = record
 FldName : array [1..11] of Char;
 FldType : Char;
 FldOffset : LongWord;
 FldSize : Byte;
 FldPrec : Byte;
 Reserv1 : Word;
 WorkArea : Byte;
 MultiUser : Word;
 SetFields : Byte;
 Reserv2 : Word;
 InIndex : Byte;
end;

TRMemoHeader = record
 NextFreeBlock : LongWord;
 BlockSize : LongWord;
 Description : array [0..503] of Char;
end;

TRMemoBlock = record
 Signature : LongWord;
 BlockSize : LongWord;
end;

К парадоксу лучше через BDE подключаться.


 
rosl   (2005-06-22 02:40) [8]

Не знаю поможет или нет, но вот кусок кода которым я пользовался для передачи данных из DBGrid в Excel:
procedure TForm1.Button_exportClick(Sender: TObject);
var
 i: Integer;
 memo: TMemo;
 bm: TBookmark;
 mem: TMemo;
 ExcelApp: Variant;
begin
if dm.Table1.RecordCount = 0 then
begin
messagedlg("Нет данных для импорта...", mtWarning , [mbOk], 0);
exit;
end;
dm.Table1.First;
progress_f.ProgressBar.BarColor:=$0077BC10;
progress_f.Show;
progress_f.Caption:="Активация MS Excel";
progress_f.ProgressBar.Position:=10;
dm.Table1.DisableControls;
   SelfDir := ExtractFilePath(Application.ExeName);
   ExcelApp:=CreateOleObject("Excel.Application");
   ExcelApp.WorkBooks.Open (SelfDir + "report.xlt");
progress_f.Caption:="Подготовка данных...";
progress_f.ProgressBar.Position:=20;
// Сперва отправляем данные в memo
   mem := TMemo.Create(Self);
   mem.Visible := false;
   mem.Parent := Form1;
   mem.Clear;
   sline := "";
progress_f.Caption:="Получение данных...";
progress_f.ProgressBar.Position:=40;
// получаем данные из memo
 for row := 0 to Grid_main.DataSource.DataSet.RecordCount-1 do
 begin
   sline := "";
   for col := 0 to Grid_main.FieldCount-1 do
   sline := sline + Grid_main.Fields[col].AsString + #9;
   mem.Lines.Add(sline);
   Grid_main.DataSource.DataSet.Next;
 end;
progress_f.Caption:="Копирование данных в буфер обмена...";
progress_f.ProgressBar.Position:=60;
 // копируем данные в clipboard
    mem.SelectAll;
    mem.CopyToClipboard;
 // отправляем их в Excel
 begin
progress_f.Caption:="Перенос данных в MS Excel...";
progress_f.ProgressBar.Position:=80;
 // вставка
    ExcelApp.Workbooks[1].WorkSheets["Приложение 7"].Cells[28,2].Select; // установка левой верхней ячейки для потока из DBGrid
    ExcelApp.Workbooks[1].WorkSheets["Приложение 7"].Paste;  // вставка потока
    ExcelApp.Cells[dm.Table1.RecordCount + 31 , 2]:="Справочно:";
    ExcelApp.Cells[dm.Table1.RecordCount + 32 , 2]:="1. Общее количество счетов физических лиц (шт.) _________________, в т.ч. размер которых превышает 100 тыс. руб. (шт.) ______________";
    ExcelApp.Cells[dm.Table1.RecordCount + 33 , 2]:="2. Общая сумма обязательств по вкладам, размер которых не превышает 100 тыс. руб. (тыс. руб.) ____________";
    ExcelApp.Cells[dm.Table1.RecordCount + 36 , 2]:="Руководитель  ___________________________________";
    ExcelApp.Cells[dm.Table1.RecordCount + 37 , 2]:="Главный бухгалтер _______________________________";
    ExcelApp.Cells[dm.Table1.RecordCount + 38 , 2]:="М.П.";
    ExcelApp.Cells[dm.Table1.RecordCount + 39 , 2]:="Исполнитель ___________________________________";
    ExcelApp.Cells[dm.Table1.RecordCount + 40 , 2]:="Телефон:";
    ExcelApp.Cells[dm.Table1.RecordCount + 41 , 2]:=""__" ________ ____ г.";
    ExcelApp.Workbooks[1].WorkSheets["Приложение 7"].Range[ExcelApp.Cells[28, 2],ExcelApp.Cells[dm.Table1.RecordCount + 27, 18]].Borders.Weight := 2;
progress_f.Caption:="Данные перенесены...";
progress_f.ProgressBar.Position:=100;
progress_f.Close;
progress_f.ProgressBar.Position:=0;
    ExcelApp.Visible := true; // сделать excel видимым

 end;
    Grid_main.DataSource.DataSet.GotoBookmark(bm);
    Grid_main.DataSource.DataSet.FreeBookmark(bm);
    Grid_main.DataSource.DataSet.EnableControls;
    Screen.Cursor := crDefault;
    dm.Table1.EnableControls;

end;


 
msguns ©   (2005-06-22 09:15) [9]

>Alex17  

Посмотри почту



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

Форум: "Базы";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.03 c
1-1121138794
Delphi_is_cool
2005-07-12 07:26
2005.07.31
"Вырезать", "Копировать" и "Вставить" в TWebBrowser


3-1119611318
jiny
2005-06-24 15:08
2005.07.31
Как перестроить таблицу индексов при запуске программы ?


1-1121338649
webpauk
2005-07-14 14:57
2005.07.31
Свойства файла


3-1119457625
serguncho
2005-06-22 20:27
2005.07.31
Firebird


4-1117798574
webpauk
2005-06-03 15:36
2005.07.31
DirectDraw, инфо о поверхности





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