![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Пытаюсь добавить поля в Query, а мне выдаёт ошибку "ADOQuery1: Missing SQL property". Connection у меня один, Data Source тоже ,тот от куда строки брать.... Помогите. Это ошибка запроса, но какого?
![]() |
|
#2
|
|||
|
|||
|
покажи текст из adoquery->sql
|
|
#3
|
|||
|
|||
|
Там нет текста, как правильно записать умножение ячеек, таблица в DBGride, вот название ячеек: Цена_ед_товара, Количество, и показать результат нужно в Стоимость.
|
|
#4
|
|||
|
|||
|
попытался сделать так, но не компилируется.
Undeclared indentifier 'DBGrid2' begin for i:=1 to DBGrid2.RowCount-1 do DBGrid2.Cells[8,i]:IntToStr(StrToInt(DBGrid2.Cells[6,i]) *StrToInt(DBGrid2.Cells[7,i])) end; |
|
#5
|
|||
|
|||
|
в запросе умножай.
чтото вроде select Цена_ед_товара, Количество, (Цена_ед_товара * Количество) as Сумма FROM Товары |
|
#6
|
|||
|
|||
|
Написал запрос, добавил поля в Query, вот такой код получился, но опять ошибка...
procedure TForm1.ADOQuery1CalcFields(DataSet: TTovar); begin ADOQuery1Sum.AsInteger:=ADOQuery1Values.AsInteger*ADOQuery1Count.AsInteger; end; |
|
#7
|
||||
|
||||
|
Если именно так код записан, то ошибки будут, он должен быть такой
Код:
procedure TForm1.ADOQuery1CalcFields(DataSet: TTovar); begin ADOQuery1.Sum.AsInteger:= ADOQuery1.Values.AsInteger * ADOQuery1.Count.AsInteger; end; З.Ы. Что-то не нахожу у ADOQuery1 ни Sum, ни Values, ни Count. Что-то здесь не так, откуда эти свойства? Последний раз редактировалось Alegun, 11.05.2013 в 20:57. |
|
#8
|
|||
|
|||
|
было скопировано отсюда http://devdelphi.ru/?p=1229
|
|
#9
|
|||
|
|||
|
Всё равно, ошибка на Undeclared indentifier 'ADOQuery1.CalcFields'
|
|
#10
|
|||
|
|||
|
Цитата:
А зачем так сложно? Что, прямо в запросе перемножить нельзя? Код:
SELECT *, Count*Price As Total From Table; |
|
#11
|
|||
|
|||
|
Запрос записан, но в таблицу вычисляемое значение не заносится
|
|
#12
|
|||
|
|||
|
Цитата:
Дык у тебя небось колонки созданы либо в гриде, либо в запросе. соответсвенно, надо либо добавить нужную колонку, либо удалить все, что бы создавалист автоматически. |
|
#13
|
|||
|
|||
|
Нет, колонки в таблице Access ещё созданы были, а колонка Стоимость пустая.
|
|
#14
|
||||
|
||||
|
Не могли бы вы выложить здесь или на zalil.ru файл *.mdb для экспериментов, а то мне нечем его в данный момент создать, а научиться работе с запросами хочется, появился к этому интерес.
|
|
#15
|
||||
|
||||
|
MDB можно создать самому через ADOX.
Примерно это выглядит так: Код:
Uses Variants,ComObj;
Var
Mdb,Tbl,Idx: Variant;
NameDB,PathDB: String;
begin
NameDB := ExtractFileName(dbName);
PathDB := ExtractFilePath(Application.ExeName);
AppDB.ConnectionString := Format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s',[PathDB+NameDB]);
Mdb := CreateOleObject('ADOX.Catalog');
Mdb.Create(AppDB.ConnectionString);
Tbl := CreateOleObject('ADOX.Table');
Tbl.Name := 'Test';
Tbl.ParentCatalog := Mdb;
Tbl.Columns.Append('IntField', adInteger);
Tbl.Columns.Append('TextField', adVarWChar, 50);
Mdb.Tables.Append(Tbl);
Idx := CreateOleObject('ADOX.Key');
Idx.Name := 'PK_Index';
Idx.Type := adKeyPrimary;
Idx.Columns.Append('IntField');
Mdb.Tables[Tbl.Name].Keys.Append(Idx);
end;Последний раз редактировалось Страдалецъ, 12.05.2013 в 11:46. |