|
|
Форум:
Soft & Warez
все о программах, новых и старых |
|
венн_BDS2005 :
Delphi
|
|
венн_BDS2005
09.12.06 23:14 |
>AndrЮshkA
Данные в запросе редактировать можно, только после редактирования данных необходимо выполнять .Post для Dataset, чтобы эти данные были внесены в БД |
|
AndrЮshkA
10.12.06 02:02 |
А сделать чтоб редактируя данные в тейбле они и в таблице охранялись? |
|
AndrЮshkA
10.12.06 02:08 |
Query1.Close;
S:='SELECT * From Продажа Where';
if combobox2.Text<>'' then s:=s+' Район ='+'"'+Combobox2.Text+'"'else s:=s+' Район = "Центр" or Район = "СЗР" or Район = "ЮЗР" or Район = "НЮР" or Район = ""';
if edit2.Text<>'' then s:=s+' and Адрес='+'"'+Edit2.Text+'"';
if edit3.Text<>'' then s:=s+' and Количество комнат='+Edit3.Text;
if Combobox1.Text<>'' then s:=s+' and Тип='+'"'+Combobox1.Text+'"';
if Combobox3.Text<>'' then s:=s+' and Планировка='+'"'+Combobox3.Text+'"';
if (edit1.Text<>'') and (EDit2.Text<>'') then s:=s+' and Площадь BETWEEN '+ edit1.Text+' and '+edit5.Text;
if edit2.Text<>'' then s:=s+ ' and Представитель='+'"'+Edit6.Text+'"';
if (edit21.Text<>'') and (EDit22.Text<>'') then s:=s+' and Цена BETWEEN '+ edit21.Text+' and '+edit22.Text;
Query1.SQL.Text:=s;
Query1.Open;
почему при таком запросе если комбобокс2 пустой, а в каком нить другом поле есть текст, он мне ничего не выдает? хотя все варианты первой переменной описаны?
мда, не умею я вопросы задавать |
|
AndrЮshkA
10.12.06 02:16 |
и еще)))
Как ты в ворд выводишь данные? ))
я нашел как просто таблицу вывести, все работает, но кривовато |
|
венн
13.12.06 08:54 |
AndrЮshkA: (10.12.06 02:02) А сделать чтоб редактируя данные в тейбле они и в таблице охранялись? Вот, для того, чтобы изменения в ADOTable сохранились в таблице базы, надо выполнить Post :) |
|
венн
13.12.06 09:32 |
AndrЮshkA: (10.12.06 02:08) Query1.Close;
S:='SELECT * From Продажа Where';
if combobox2.Text<>'' then s:=s+' Район ='+'"'+Combobox2.Text+'"'else s:=s+' Район = "Центр" or Район = "СЗР" or Район = "ЮЗР" or Район = "НЮР" or Район = ""';
if edit2.Text<>'' then s:=s+' and Адрес='+'"'+Edit2.Text+'"';
if edit3.Text<>'' then s:=s+' and Количество комнат='+Edit3.Text;
if Combobox1.Text<>'' then s:=s+' and Тип='+'"'+Combobox1.Text+'"';
if Combobox3.Text<>'' then s:=s+' and Планировка='+'"'+Combobox3.Text+'"';
if (edit1.Text<>'') and (EDit2.Text<>'') then s:=s+' and Площадь BETWEEN '+ edit1.Text+' and '+edit5.Text;
if edit2.Text<>'' then s:=s+ ' and Представитель='+'"'+Edit6.Text+'"';
if (edit21.Text<>'') and (EDit22.Text<>'') then s:=s+' and Цена BETWEEN '+ edit21.Text+' and '+edit22.Text;
Query1.SQL.Text:=s;
Query1.Open;
почему при таком запросе если комбобокс2 пустой, а в каком нить другом поле есть текст, он мне ничего не выдает? хотя все варианты первой переменной описаны?
мда, не умею я вопросы задавать а ты попробуй для:
if combobox2.Text<>'' then s:=s+' Район
='+'"'+Combobox2.Text+'"'else s:=s+' Район =
"Центр" or Район = "СЗР" or Район = "ЮЗР" or Район =
"НЮР" or Район = ""';
использовать, например, такое:
if combobox2.Text<>'' then s:=s+' Район
='+'"'+Combobox2.Text+'"'else s:=s+' Район LIKE ''*''';
где как, но по-моему именно * надо ставить в качестве подстановочного знака, либо знак процента LIKE ''%'''
заметь, что ''*''' - там используются только апострофы, а не кавычки с апострофом |
|
венн
13.12.06 10:00 |
AndrЮshkA: (10.12.06 02:16) и еще)))
Как ты в ворд выводишь данные? ))
я нашел как просто таблицу вывести, все работает, но кривовато можешь с экселем поэкспериментировать :)
вот из рабочей программы код:
var
Excel, ExcelBook, ExcelSheet: OleVariant;
RowCount, i: integer;
begin
//Запускаем Эксель
Excel := CreateOleObject('Excel.Application');
Excel.Visible := true;
ExcelBook := Excel.Workbooks.Add;
ExcelSheet := ExcelBook.Sheets[1];
//Начинаем заполнять прайс
with mdlMain.qryMain do begin
First;
RowCount:=1;
while not EOF do begin
ExcelSheet.Cells[RowCount,1].Value := Fields[4].AsVariant;
ExcelSheet.Cells[RowCount,2].Value := Fields[6].AsString;
ExcelSheet.Cells[RowCount,3].Value := Fields[8].AsString;
ExcelSheet.Cells[RowCount,4].Value := Fields[13].AsString;
ExcelSheet.Cells[RowCount,5].Value := Fields[17].AsString+' ';
ExcelSheet.Cells[RowCount,5].HorizontalAlignment:=4;
ExcelSheet.Cells[RowCount,6].Value := Fields[22].AsString;
ExcelSheet.Cells[RowCount,7].Value := Fields[19].AsCurrency;
Next;
RowCount:=RowCount + 1;
end;
end;
//Изменение размеров ячеек
ExcelSheet.Columns[1].ColumnWidth := 15;
ExcelSheet.Columns[2].ColumnWidth := 15;
ExcelSheet.Columns[3].ColumnWidth := 20;
ExcelSheet.Columns[4].ColumnWidth := 30;
ExcelSheet.Columns[5].ColumnWidth := 15;
ExcelSheet.Columns[6].ColumnWidth := 15;
ExcelSheet.Columns[7].ColumnWidth := 15;
...
ExcelSheet.Range['A6:G6'].Select;
Excel.Selection.Borders[8].LineStyle := 0;
Excel.Selection.Borders[8].Weight := 3;
Excel.Selection.Borders[8].ColorIndex := 0;
...
//Установки страницы печати
ExcelSheet.PageSetup.Orientation := 2;
ExcelSheet.PageSetup.Zoom := 95;
ExcelSheet.Protect(True,True,True);
Вооот.:)) объектную модель экселя, равно как и ворда, можешь посмотреть в справке по VBA к данным приложениям..
да и вообще - неплохо было бы тебе в VBA заглянуть, да посмотреть - как там работают с раличными объектами.
в данном примере используется метод позднего связывания...
можно, конечно, воспользоваться палитрой компонентов Servers, но мне это не нравится... |
|
AndrЮshkA
14.12.06 18:02 |
венн: (13.12.06 10:00) можешь с экселем поэкспериментировать :)
вот из рабочей программы код:
var
Excel, ExcelBook, ExcelSheet: OleVariant;
RowCount, i: integer;
begin
//Запускаем Эксель
Excel := CreateOleObject('Excel.Application');
Excel.Visible := true;
ExcelBook := Excel.Workbooks.Add;
ExcelSheet := ExcelBook.Sheets[1];
//Начинаем заполнять прайс
with mdlMain.qryMain do begin
First;
RowCount:=1;
while not EOF do begin
ExcelSheet.Cells[RowCount,1].Value := Fields[4].AsVariant;
ExcelSheet.Cells[RowCount,2].Value := Fields[6].AsString;
ExcelSheet.Cells[RowCount,3].Value := Fields[8].AsString;
ExcelSheet.Cells[RowCount,4].Value := Fields[13].AsString;
ExcelSheet.Cells[RowCount,5].Value := Fields[17].AsString+' ';
ExcelSheet.Cells[RowCount,5].HorizontalAlignment:=4;
ExcelSheet.Cells[RowCount,6].Value := Fields[22].AsString;
ExcelSheet.Cells[RowCount,7].Value := Fields[19].AsCurrency;
Next;
RowCount:=RowCount + 1;
end;
end;
//Изменение размеров ячеек
ExcelSheet.Columns[1].ColumnWidth := 15;
ExcelSheet.Columns[2].ColumnWidth := 15;
ExcelSheet.Columns[3].ColumnWidth := 20;
ExcelSheet.Columns[4].ColumnWidth := 30;
ExcelSheet.Columns[5].ColumnWidth := 15;
ExcelSheet.Columns[6].ColumnWidth := 15;
ExcelSheet.Columns[7].ColumnWidth := 15;
...
ExcelSheet.Range['A6:G6'].Select;
Excel.Selection.Borders[8].LineStyle := 0;
Excel.Selection.Borders[8].Weight := 3;
Excel.Selection.Borders[8].ColorIndex := 0;
...
//Установки страницы печати
ExcelSheet.PageSetup.Orientation := 2;
ExcelSheet.PageSetup.Zoom := 95;
ExcelSheet.Protect(True,True,True);
Вооот.:)) объектную модель экселя, равно как и ворда, можешь посмотреть в справке по VBA к данным приложениям..
да и вообще - неплохо было бы тебе в VBA заглянуть, да посмотреть - как там работают с раличными объектами.
в данном примере используется метод позднего связывания...
можно, конечно, воспользоваться палитрой компонентов Servers, но мне это не нравится... вот эт нужное)) а с остальным я сам разобрался))
правда я и в ворд нашел как закидывать)) |
|
AndrЮshkA
14.12.06 19:27 |
CreateOleObject - не знаю такую штуку говорит(( может там какие библиотеки надо прописать?! |
|
AndrЮshkA
14.12.06 19:35 |
а нашел че нехватает)) все работает) |
|