|  | 
 
 | 
| 
			 
			#1  
			
			
			
			
		 | ||||
| 
 | ||||
|  Набор вопросов Набор вопросов сомнительного характера=) === begin 1) есть БД подключенная ADO в поле dbEdit выводится дата в формате хх.хх.хххх как сделать так чтоб эта дата сравнивалась с системными часами и в другом бдедите выдавалось как бы разность настоящего времени от показоного... типа например 5 дней 2) самый стремный вопрос (аж стыдно задавать) где переименовывается .exe а то прожект1 достал уже)) 3) кнопке присвоено Код: AdoTable1.Locate(Combobox1.Text, Edit1.Text, [loCaseInsensitive, loPartialKey]); 4) и как легким путем сделать hot key типа чтоб например на ctrl+Ё form4.show; 5) как из bdgrid (БД подключенная ADO) экспортировать все в Excel зы: искал везде.. везде где находил сложные коды.. кто знает по-легче напишите=) Последний раз редактировалось mr.Tea, 08.01.2010 в 21:46. | 
| 
			 
			#2  
			
			
			
			
		 | |||
| 
 | |||
|   1. Либо в звпросе используется команда для получения разности, типа  Код: select *, sysdate-date as raznost from... 2. File -> Save Project As... 3. ??? Не уверен, что через Locate можно так сделать. Беги сам по записям через TADOQuery.Next и проверяй значения полей (if Pos(Edit1.Text,ADOQuery.FieldByName('MyField').AsS tring) > 0 then...). 4. Через ActionManager. 5. А ты думал, что будет легко? Там основная сложность - подключение к самому Excel и открытие нужной таблицы. Сам экспорт делается в 5 строк (ну не из грида, конечно, а из источника данных). | 
| 
			 
			#3  
			
			
			
			
		 | ||||
| 
 | ||||
|   2, 4. ответы помогли=) 1, 3, 5. ничего не понятно)) ну ладно 1, 5-ый там чего-то реально тяжело Цитата: 
 у меня образно БД допустим с двумя столбцами Имя и Фамилия комбобоксу1 присвоено "Имя и фамилия" если у меня например два Ивана и я выбрал искать по имени то locate находит только первого.. как сделать чтоб искалось дальше? p.s. что меня поражает то что раздел для Начинающих а ответы тут дают Профессиональным языком.. как будто я знаю куда надо тыкнуть чтоб ввести код и т.д. =) я прикрепил файл.. делал быстро но смысл там такой же... пароля там нет. жмите ОК | 
| 
			 
			#4  
			
			
			
			
		 | |||
| 
 | |||
|  ответ на 5 Код: procedure CreateFileExcel(kolFiles:integer); //----Создание Excel файла отчета -------
var stolb : byte;
    x, y, i: integer;
    XL: Variant;
    f:TextFile;
begin
 XL := CreateOleObject('Excel.Application'); // Создание OLE объекта
 XL.DisplayAlerts := False;//не показывать предупреждающие сообщения
 XL.WindowState := -4137;//Открывать Excel на полный экран
 if not(FileExists(stDir+'\RPO_'+copy(DateToStr(date),4,7)+'.xls')) then //Если нету файла отчета за текуший месяц создаем его
  begin
   XL.WorkBooks.add; // Создание новой рабочей книги
   XL.WorkBooks[1].WorkSheets[1].Cells[1,2].Value:='OPS'; // Вторая колонка Шапка 'OPS'
   XL.Range['A1:AG'+IntToStr(StrToInt(baza[0,0])+1)].Select; //Выделение всех рабочих ячеек
   XL.Selection.Borders.LineStyle:=1; // Устанавливаем стиль борьера ячеек выделенных
   XL.Selection.VerticalAlignment:=3; // Вертикальное выравнивание поЦентру
   XL.Selection.HorizontalAlignment:=3; // Горизонтальное выравнивание поЦентру
   XL.Selection.ColumnWidth:=12; // ширина выделенных столбцов 12
   XL.Range['C2:AG'+IntToStr(StrToInt(baza[0,0])+1)].Select;
   XL.Selection.Borders.LineStyle:=2;
   XL.Range['A1:A1'].Select;
   for i:=1 to StrToInt(baza[0,0]) do // заполняем 1-й и 2-й столбец
    begin
     XL.WorkBooks[1].WorkSheets[1].Cells[i+1,1].Value:=IntToStr(i);
     XL.WorkBooks[1].WorkSheets[1].Cells[i+1,2].Value:=baza[i,0];
    end;
   for i:=1 to 31 do // Заполняем Шапку датами за текуший месяц с 1 по 31
    XL.WorkBooks[1].WorkSheets[1].Cells[1,i+2].Value:=IntToStr(i)+copy(DateToStr(date),3,8);
  end
  else//Иначе Если файл есть то редоктируем его
   begin
    if FileExists(stDir+'\RPO_'+copy(DateToStr(date),4,7)+'.xls') then
     begin
      XL.ActiveWorkbook.Close;
      XL.Application.Quit;
     end;
    XL.WorkBooks.Open(stDir+'\RPO_'+copy(DateToStr(date),4,7)+'.xls');    //Открываем рабочую книгу
    XL.WorkSheets[1].Activate;    //Становимся на первый лист
   end;
 frmMain.Pg.Position:=0;
 frmMain.Pg.Max:=kolFiles;
 for x:=1 to kolFiles do
  begin
   frmMain.PRG.Caption:=Files[x].Index;
   for y:=1 to StrToInt(baza[0,0]) do
    if Files[x].Index=baza[y,0] then
     begin
      XL.WorkBooks[1].WorkSheets[1].Cells[y+1,StrToInt(copy(Files[x].Date,3,2))+2].Value:=Files[x].Name;
     end;
   FileCopy(stDir+'\UnZip\'+Files[x].Name,stDir+'\'+DateToStr(Date)+'\'+Files[x].Name);
   DeleteFile(stDir+'\UnZip\'+Files[x].Name);
   frmMain.PG.Position:=frmMain.PG.Position+1;
  end;
 frmMain.PG.Position:=0;
 frmMain.PRG.Caption:='Creating Excel Reports Complite!!!';
 XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Value:=TimeToStr(Time);
 XL.ActiveWorkbook.SaveAs(stDir+'\RPO_'+copy(DateToStr(date),4,7)+'.xls');
 XL.ActiveWorkbook.Close;
 XL.Application.Quit;
end;из этого примера все понятно только тебе, за место, массива Baza, надо использавать DataSourceи работать с ним !!! Поскольку Grid только отображает данные а храняться они там при работе с базами! Код:  with DBGrid1.DataSource.DataSet do
  begin
   First;
   while not EOF do
    begin
  что и куда
     Next;
    end;
  end;PS Помогите мне http://www.delphisources.ru/forum/sh...ad.php?t=10538 |