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

Вниз

edit и Excel   Найти похожие ветки 

 
Nik_Larin   (2005-05-23 11:59) [0]

Уважаемые мастера, отзывчевые люди, у меня такой к вам для меня сложный вопрос, а для вас, я думаю, простой вопросик.
Постараюсь попонятнее!
Вообщем, есть два edit - а и документ Excel.
Пользователь вводит фамилию в edit1 и имя в edit2, и нажимает на кнопку, которая заносит эти данные в ячейку таблицы Excel, но это ещё не все, дело в том что этих пользоватлей несколько, а документ один. как сделать чтобы каждый пользователь добавлялся?
Заранее большое спасибо!


 
Drakosha ©   (2005-05-23 13:06) [1]

... а поподробнее про пользователей можно?
а то дабавить в ексель не проблема.


 
-=XP=- ©   (2005-05-23 13:09) [2]

Многопользовательский доступ к одному документу Excel?
Недурно!
Используйте базы данных, и не изобретайте велосипед.


 
Nik_Larin   (2005-05-23 13:18) [3]

Drakosha ©   (23.05.05 13:06) [1]

>а то дабавить в ексель не проблема.

Хорошо начнем с того как просто добавить данные одного студента в екскль! Drakosha, как это сделать?

-=XP=-
>Используйте базы данных, и не изобретайте велосипед.
Еще дурнее вопрос: А это как сделать, что за база?


 
-=XP=- ©   (2005-05-23 13:34) [4]

Еще дурнее вопрос: А это как сделать, что за база?

Прежде чем что-то делать, разберитесь, что это, и как это обычно принято делать.

База данных - это есть некоторый абстрактный термин, определяющий место и способ хранения данных. Кроме того, по умолчанию подразумеваются механизмы сохранения этих данных (запись) и извлечения этих данных (чтение) из этой базы данных.

Основные понятия: База Данных (БД), Таблица, Запись, Поле. В разных источниках эти понятия могут называться по-разному, но сути своей от этого они не меняют.

Поле - единица информации - в данном случае это "Фамилия" или "Имя". Могут быть и другие поля, такие как "Дата рождения" и пр. Для простоты понимания, поля - ячейки таблицы, находящиеся в одном столбце.
Запись - совокупность полей, описывающих одну сущность. В данном случае - человека. Для простоты понимания, запись - строка таблицы.
Таблица - совокупность записей.
База Данных - совокупность таблиц.

Для работы с БД презназначены СУБД - Системы Управления Базами Данных.
Примеры: MS Jet (Access), Intebase Server, MS SQL Server, DBF, Paradox и пр.

Это в нескольких словах.

А вообще - чтобы не изобретать велосипед - читайте теорию построения БД. Причем займитесь этим прямо сейчас, иначе потратите много сил и времени на решение вопросов, которые уже даыно решены. В частности - организация многопользовательского доступа к БД.


 
Гарри Поттер ©   (2005-05-23 13:48) [5]

Вроде человеку надо чтобы при повторном вводе данные вводились не в ту же ячейку, а в следующую?


 
Drakosha ©   (2005-05-23 14:05) [6]

2 Nik_Larin  
вот этого тебе должно хватить
http://delphiworld.narod.ru/base/excel_data_exchange.html

а про двух юзверей всётаки попросилбы поподробнее..


 
-=XP=- ©   (2005-05-23 14:38) [7]

Вроде человеку надо чтобы при повторном вводе данные вводились не в ту же ячейку, а в следующую?

Интересно, что ему понадобится, когда два пользователя одновременно попытаются получить доступ к документу?


 
Dels ©   (2005-05-23 15:44) [8]

>Drakosha ©   (23.05.05 14:05) [6]
Обратился по данной ссылке (меня этот вопрос тоже очень интересует), попробовал компилировать - ошибку выдал на строчке
   XLApp.Connect;
может какой-то компонент забыл?


 
debuger ©   (2005-05-23 16:01) [9]

Это либо ваш ексел проглючивает или либа COMObj.


 
debuger ©   (2005-05-23 16:10) [10]

Брр. Плохо перечитал код. Я от кого-то слышал, что использовать TExcelApplication не очень рекомендуется. Более цивильный вариант(не факт)..., в общем смотрите код(он старый, так что не обращайте внимания на его стиль).


uses COMObj;

function ReferenceToCell(const ARow, ACol: Integer): string;
begin
 Result := Chr(Ord("A") + ACol - 1) + IntToStr(ARow);
end; {Reference to Cell}

function xlCellFormat(const value: double): double;
begin
 Result := Trunc(value) + Trunc(Frac(value) * 100) / 100;
end; {xlCellFormat}

function ExportChartToExcel(const deviceName: string; const series: TLineSeries; const devCfg: TDeviceConfiguration; const fileName: string): boolean;
const
 xlWBatWorksheet = -4167;
var
 xlApp, xlSheet, xlData : OLEVariant;
 i: Integer;

 rowCount, colCount: integer;
begin
 Result := False;

 rowCount := series.Count + 2;
 colCount := 1;

 xlData := VarArrayCreate([0, rowCount, 0, colCount], varVariant);

 // дата
 xlData[0, 0] := "Дата";
 xlData[0, 1] := DateToStr(Now);
 // время
 xlData[1, 0] := "Время";
 // значения
 xlData[1, 1] := "Показания";

 // заполняем
 for i := 0 to series.Count - 1 do begin
   // время
   xlData[i + 2, 0] := TimeToStr(series.XValues[i]);
   // значения
   xlData[i + 2, 1] := xlCellFormat(series.YValues[i]);
 end; {for}

 xlApp := CreateOleObject("Excel.Application");
 try
   // прячем Excel
   xlApp.Visible := False;
   xlApp.Workbooks.Add(xlWBatWorkSheet);

   xlSheet := xlApp.Workbooks[1].WorkSheets[1];
   xlSheet.Name := deviceName;

   // заполняем шит
   xlSheet.Range[ReferenceToCell(1, 1), ReferenceToCell(rowCount + 1, colCount + 1)].Value := xlData;

   // форматируем шит
   xlSheet.Range[ReferenceToCell(1, 1), ReferenceToCell(1, 2)].Font.Bold := True;
   xlSheet.Range[ReferenceToCell(2, 1), ReferenceToCell(rowCount, colCount + 1)].Borders.LineStyle := 1;

   xlSheet.Columns[1].ColumnWidth := 10;
   xlSheet.Columns[2].ColumnWidth := 13;
   //xlSheet.Columns[3].ColumnWidth := 10;
   //xlSheet.Columns[4].ColumnWidth := 10;

   // сохраняем Excel Worksheet
   try
     xlApp.Workbooks[1].SaveAs(fileName);
     Result := True;
   except
     // Error ?
   end;
 finally
   // завершаем Excel
   if not VarIsEmpty(XLApp) then
   begin
     xlApp.DisplayAlerts := False;
     xlApp.Quit;
     xlApp := Unassigned;
     xlSheet := Unassigned;
     xlData := Unassigned;
   end;
 end;
end; {ExportChartToExcel}


 
Drakosha ©   (2005-05-23 16:27) [11]

2 Dels ©   (23.05.05 15:44) [8]
а вот это не забыл?
"Так же на форме находится компонент TExcelApplication со свойством Name, содержащим XLApp и свойством ConnectKind, содержащим ckNewInstance."

2 debuger ©  
Оч хотелось бы  узнать чего ето TExcellApplication так плох ... пол проекта с его использованием написано...и не хотелось бы переписывать :) ... если в вспомнишь где о таком читал дай знать плиз.


 
YurikGL ©   (2005-05-23 19:13) [12]


> Оч хотелось бы  узнать чего ето TExcellApplication так плох
> ...

У него реализован не весь интерфейс. Поэтому приходится изголяться. Через CreateOleObject все пишется намного проще


 
Drakosha ©   (2005-05-25 09:58) [13]

YurikGL ©   (23.05.05 19:13) [12]

пару примеров если не затруднит



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

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

Наверх




Память: 0.51 MB
Время: 0.035 c
1-1117086896
Артем К.
2005-05-26 09:54
2005.06.14
Удаление компонента в Runtime при нажатии на кнопку Delete


14-1116687140
some_user
2005-05-21 18:52
2005.06.14
Посоветуйте заменитель корзины Windows


1-1116835140
Nik_Larin
2005-05-23 11:59
2005.06.14
edit и Excel


1-1117524388
sofs
2005-05-31 11:26
2005.06.14
Мемо


14-1116748532
Kerk
2005-05-22 11:55
2005.06.14
С днем рожденья! 22 мая