Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [delphi] dbgrid 
:(
    Опции темы
devyshko
Дата 26.12.2007, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



есть dbgrid, в котором табличка. подскажите, как обратиться к конкретной ячейке и извлечь из неё данные.
PM   Вверх
Rodman
Дата 26.12.2007, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



обрабатываешь событие OnCellsClick и там пишешь 
Код

showmessage(Query.Fields.Fields[1].asstring);//Query контрол из которого тянуться данные

PM MAIL WWW Skype GTalk YIM MSN   Вверх
devyshko
Дата 27.12.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



Rodman,  спасибо...

теперь я пыталась всё что в гриде..перекинуть в excel
к нему всё нормально подключилась..как записать в excel тоже знаю

поняла, что инфа извлекается из квери, а не напрямую из грида, ну вот что-то ничего не получилось :(
PM   Вверх
Данкинг
Дата 27.12.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Как-то примерно так:  smile 
Код

for j:=0 to zapros.FieldCount-1 do
 excel.activeworkbook.activesheet.cells.item[1,j+1]:=zapros.Fields[j].AsString;


А вообще - ищи топики про экспорт из таблиц в Excel, примеров достаточно.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
devyshko
Дата 27.12.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



сейчас нет возможности проверить, а он не выведет ли всего одну строку (или столбец)?
PM   Вверх
Данкинг
Дата 28.12.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(devyshko @ 27.12.2007,  23:52)
сейчас нет возможности проверить, а он не выведет ли всего одну строку (или столбец)?

Мой пример просто первую строчку в Excel заполняет, но это же именно пример. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
devyshko
  Дата 28.12.2007, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



smile спасибо конечно, но проблема именно в том..как перейти на следуюшую строку
нашла вот примерчег, но что есть table (если это компонент Ttable...то да.кидала я его на форму, но чё там с ним дальше делать не знаю) в общем вот так smile
Код

  Table1.First;
      i1:=1;
   for i:=1 to Table1.RecordCount do begin
   ProgressBar1.Position := 100* i div Table1.RecordCount;
      for j:=1 to DBGrid1.Columns.Count do
      Sheet.Cells(i1,j):=DBGrid1.Fields[j-1].Value;
      col:=XLApp.WorkBooks[1].WorkSheets[1].Columns.autoFit;
      i1:=i1+1;
      Table1.Next;
   end;


а...ну и что такое ProgressBar1 он тоже не знает)
PM   Вверх
Данкинг
Дата 28.12.2007, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



ProgressBar1 - это строка прогресса, в моём нижеследующем примере она "gauge" (можно её вообще выкинуть пока что). В твоём примере (ИМХО не самом наглядном) Table1 - это именно таблица, её надо подключить к таблице в базе данных (я подключаюсь через ADO).
Переход на следующую строку в твоём примере - Table1.Next; (переход в таблице к следующей строке, "next"). А для перехода на следующую строку на листе ёкселя следует завести переменную (в твоём примере i1) и соответственно увеличивать её на единицу при каждом Table1.Next.

Мой пример выдран из программы, которая из DBF экспортирует в XLS с нужными мне условиями (ex - типа variant). Разбирайся... smile 
Код

zapros.Close;
zapros.SQL.Clear;
zapros.SQL.Text:=sq;
zapros.Open;
ex:=createoleobject('excel.application');
ex.visible:=false;
ex.DisplayAlerts:=False;
ex.workbooks.add;
ex.activeworkbook.sheets[1].activate;
try
Ex.ActiveSheet.PageSetup.centerfooter:=bsSkinEdit1.Text;
ex.ActiveSheet.PageSetup.Orientation := xlLandscape;
ex.ActiveSheet.PageSetup.topmargin:=0;
ex.ActiveSheet.PageSetup.leftmargin:=0;
ex.ActiveSheet.PageSetup.rightmargin:=0;
Ex.ActiveSheet.PageSetup.rightfooter:='&P';
Ex.ActiveSheet.PageSetup.PrintTitleRows := '$1:$1';

except
end;
ex.activeworkbook.activesheet.Rows[1].Font.Bold := True;
ex.activeworkbook.activesheet.Rows[1].HorizontalAlignment := 3;
for i:=0 to zapros.FieldCount-1  do
  begin
  ex.activeworkbook.activesheet.cells.item[1,i+1]:=zapros.Fields[i].FieldName;
  ex.activeworkbook.activesheet.Cells[1,i+1].Borders.lineStyle := 1;
  if (zapros.Fields[i].FieldName='recno2') or (zapros.Fields[i].FieldName='ves') then ex.activeworkbook.activesheet.cells.item[1,i+1].ColumnWidth := 5 else ex.activeworkbook.activesheet.cells.item[1,i+1].ColumnWidth := 30;
  end;

zapros.First;
for i:=1 to zapros.RecordCount do
 begin
 gauge.Value:=i;
 application.ProcessMessages;
 ex.activeworkbook.activesheet.Rows[i].HorizontalAlignment := 3;
 for j:=0 to zapros.FieldCount-1 do
  begin
  ex.activeworkbook.activesheet.cells.item[i+1,j+1]:=zapros.Fields[j].AsString;
  ex.activeworkbook.activesheet.Cells[i+1,j+1].Borders.lineStyle := 1;
  ex.activeworkbook.activesheet.Cells[i+1,j+1].WrapText:=true;
  end;
 zapros.Next;
 end;


fn:=extractfilepath(opener.FileName)+'ves_'+trim(bsSkinEdit1.Text);
Ex.ActiveWorkbook.SaveAs(fn);
ex.application.quit;
ex:=unassigned;
bsSkinMessage1.MessageDlg ('Работа окончена!',mtinformation,[mbyes],0);
gauge.Visible:=false;
end;




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
devyshko
Дата 28.12.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



спасиб..спасиб..спасиб...
это поняла, чёт даже вопросов пока нет   smile  
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.