|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Посчитать количество записей dbgrid
Пожалуйста подскажите как посчитать кол-во строк dbgrid'а и вывести результат в excel.
|
#2
|
||||
|
||||
Количество строк считается не в DBGrid'е а в Table
Код:
var i: integer; XLApp,Sheet,Colum:Variant; begin i:=ADOTable1.RecordCount; XLApp:= CreateOleObject('Excel.Application'); XLApp.Visible:=true; XLApp.Workbooks.Add(-4167) ; XLApp.Workbooks[1].Worksheets[1].Name:='Количество строк'; Sheet:=XLApp.Workbooks[1].Worksheets['Количество строк']; Sheet.Cells[1,1]:='Количество строк в таблице -'+IntToStr(i); end; |
#3
|
|||
|
|||
Спасибо тебе добрый человек! Все работает.
|
#4
|
|||
|
|||
Цитата:
|
#5
|
||||
|
||||
Код:
var i: integer; begin i:=ADOTable1.RecordCount; label1.Caption:='Количество строк в таблице -'+IntToStr(i); end; From VasYa with LoVe... |
#6
|
||||
|
||||
Цитата:
А как подсчитать не количество строк dbgrid'а,а количество одинаковых записей в нем(вернее даже группы записей,а именно чтобы одинаковые записи сгруппировались и подсчитать количество их в каждой группе) и тоже вывести в excel?!Подскажите,пожалуйстааа! |
#7
|
|||
|
|||
Цитата:
Код:
SELECT t.tip, COUNT(m.tip_id) AS cnt FROM main m INNER JOIN tip t on (m.tip_id = t.tip_id) GROUP BY t.tip |
#8
|
||||
|
||||
Цитата:
хммм...не соображу..Сорри..мой уровень знания Делфи весьма низок..Можно пороще?прямо на пальцах,если есть терпение Есть одна таблица Table1.В ней содержатся фамилии,даты,диагнозы.Необходимо сделать запрос так,чтобы диагнозы одинаковые группировались,производился подсчет количества диагнозов в каждой группе и результат выводился в виде таблицы в Эксель... |
#9
|
|||
|
|||
Код:
procedure TForm1.Button1Click(Sender: TObject); var XL, Cell1, Cell2, ArrayData: Variant; RowCount: integer; BeginCol, BeginRow,i,ColCount:byte; begin BeginCol := 1; // Начальные координаты ячейки BeginRow := 3; With ADOQuery2 do begin//Делаем наш запрос Close; SQL.Clear; SQL.Add('SELECT diagnos, COUNT(diagnos) as cnt FROM main'); SQL.Add('GROUP BY diagnos'); Open; end; RowCount := ADOQuery2.RecordCount; //Количество строк ColCount := 2; //Количество столбцов XL := CreateOleObject('Excel.Application'); //создаем Excel XL.Application.EnableEvents := false; // Отключаем реакцию Excel на события (для ускорения) XL.WorkBooks.Add; // Добавляем книгу XL.Rows.Rows[2].Font.Bold:=true; //жирный шрифт XL.Rows.Rows[2].Font.Size:=10; //размер шрифта XL.Rows.Rows[2].WrapText := True; //перенос текста по словам XL.Rows.Rows[2].HorizontalAlignment := 3;//Выравнивание по центру по горизонтали XL.Rows.Rows[2].VerticalAlignment := 2;//Выравнивание по центру по вертикали XL.Cells[2,1]:= 'Диагноз';//делаем шапку таблицы XL.Cells[2,2]:='Количество'; XL.Columns.Columns[1].ColumnWidth:=50;//устанавливаем ширину столбцов XL.Columns.Columns[2].ColumnWidth:=10; ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant); // созданем вариантный массив для заполнения данных из запроса ADOQuery2.First; for i := 1 to RowCount do begin ArrayData[i,1] := ADOQuery2['diagnos']; ArrayData[i,2] := ADOQuery2['cnt']; ADOQuery2.Next; end; Cell1 := XL.Cells[BeginRow-1, BeginCol]; // левая верхняя ячейка области в которую будем выводить данные Cell2 := XL.Cells[BeginRow+RowCount-1, BeginCol + ColCount-1];//Правая нижняя ячейка области XL.Range[XL.Cells[BeginRow, BeginCol], Cell2].Value := ArrayData; //вывод данных XL.Range[Cell1, Cell2].Borders.LineStyle := 1; XL.Visible := true;//делаем Excel видимым end; |
#10
|
||||
|
||||
Все работаааает!!!!Супер!Волшебник,волшебник!!!Совсем обнаглею,но все же спрошу...А как сделать так,чтобы потом,после получения данного отчета,таблица становилась прежней...Т.е.,закрывая эксель и переходя к программе,на форм стояла прежняя таблица,а не полученная в результате запроса?
|
#11
|
|||
|
|||
Путем выполнения этого кода с дополнительным компонентом ADOQuery.
при этом основной, с которым связан DBGrid, не трогаешь. Годится? |
#12
|
||||
|
||||
Цитата:
Ага,спасибо,работает!я не блондинка,правда |