Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.05.2013, 17:40
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Проблема с ADOQuery

Пытаюсь добавить поля в Query, а мне выдаёт ошибку "ADOQuery1: Missing SQL property". Connection у меня один, Data Source тоже ,тот от куда строки брать.... Помогите. Это ошибка запроса, но какого?
Ответить с цитированием
  #2  
Старый 09.05.2013, 20:13
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

покажи текст из adoquery->sql
Ответить с цитированием
  #3  
Старый 11.05.2013, 13:53
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Там нет текста, как правильно записать умножение ячеек, таблица в DBGride, вот название ячеек: Цена_ед_товара, Количество, и показать результат нужно в Стоимость.
Ответить с цитированием
  #4  
Старый 11.05.2013, 13:58
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

попытался сделать так, но не компилируется.
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  
Старый 11.05.2013, 14:26
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

в запросе умножай.
чтото вроде
select Цена_ед_товара, Количество, (Цена_ед_товара * Количество) as Сумма FROM Товары
Ответить с цитированием
  #6  
Старый 11.05.2013, 15:38
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Написал запрос, добавил поля в Query, вот такой код получился, но опять ошибка...

procedure TForm1.ADOQuery1CalcFields(DataSet: TTovar);
begin
ADOQuery1Sum.AsInteger:=ADOQuery1Values.AsInteger*ADOQuery1Count.AsInteger;
end;
Ответить с цитированием
  #7  
Старый 11.05.2013, 20:41
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Если именно так код записан, то ошибки будут, он должен быть такой

Код:
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  
Старый 11.05.2013, 21:49
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

было скопировано отсюда http://devdelphi.ru/?p=1229
Ответить с цитированием
  #9  
Старый 11.05.2013, 21:56
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Всё равно, ошибка на Undeclared indentifier 'ADOQuery1.CalcFields'
Ответить с цитированием
  #10  
Старый 11.05.2013, 22:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Алексей Чайник
Всё равно, ошибка на Undeclared indentifier 'ADOQuery1.CalcFields'

А зачем так сложно? Что, прямо в запросе перемножить нельзя?
Код:
SELECT *, Count*Price As Total From Table;
Ответить с цитированием
  #11  
Старый 11.05.2013, 22:21
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Запрос записан, но в таблицу вычисляемое значение не заносится
Ответить с цитированием
  #12  
Старый 11.05.2013, 23:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Алексей Чайник
Запрос записан, но в таблицу вычисляемое значение не заносится

Дык у тебя небось колонки созданы либо в гриде, либо в запросе.
соответсвенно, надо либо добавить нужную колонку, либо удалить все, что бы создавалист автоматически.
Ответить с цитированием
  #13  
Старый 12.05.2013, 00:20
Алексей Чайник Алексей Чайник вне форума
Прохожий
 
Регистрация: 09.05.2013
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Нет, колонки в таблице Access ещё созданы были, а колонка Стоимость пустая.
Ответить с цитированием
  #14  
Старый 12.05.2013, 04:28
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Не могли бы вы выложить здесь или на zalil.ru файл *.mdb для экспериментов, а то мне нечем его в данный момент создать, а научиться работе с запросами хочется, появился к этому интерес.
Ответить с цитированием
  #15  
Старый 12.05.2013, 11:44
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025