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

Вниз

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

Наверх




Память: 0.48 MB
Время: 0.04 c
3-1115493471
Yurisimus
2005-05-07 23:17
2005.06.14
Как в Fast Report получить данные из двух таблиц...


14-1116677046
Иксик
2005-05-21 16:04
2005.06.14
Крупный митинг


14-1116861462
Ломброзо
2005-05-23 19:17
2005.06.14
ГОСТ 21552-84


4-1114333737
Nafania
2005-04-24 13:08
2005.06.14
Список программ, которые запускались с компьютера


3-1115289576
Борис72Ф
2005-05-05 14:39
2005.06.14
кирилица в IB





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