ПредишенСледващото

Работа с шум в Делфи

отново Здравейте, пиша статия за АДО. а също и по искане на моя блог читатели, които иска да каже как базата данни може да работи с изчислени полета (до стойността на изчисленото поле веднага се променя при въвеждане на нова стойност), по примера на база данни - MS Access. Аз ще ви кажа 2 начина на работа с изчислени полета, както и примера показват само по един начин. Е, първият метод е, че всички области, включително изчислява, ние създаваме един път в базата данни - MS Access. където полето за тип данни, който ще се промени стойността - показват изчислява област.

Що се отнася до втория метод областта на изчислението, ние ще създадем в този проект, за TAdoQuery компоненти или TAdoTable.

Е, аз трябва да кажа, че не са много правилен 3 метод, в който можете да използвате TTimer.

Нека да започнем с това нашата база данни.

Имам в базата данни има следната структура:

По този начин, на базата данни в MS Access, която сме създали, сега отидете на проекта в Делфи. във формуляра Имам следните компоненти:

Сега, да направи връзката с нашата база данни, как да го направим, ние разгледахме в тази статия. така, че акцентът върху това, аз няма. След това, ние се нуждаем от целия компоненти са свързани помежду си, и тук и да започнете. Изберете компонент TADOQuery и собственост Connection посочи - TADOConenction. След това изберете TDataSource компонент и собственост DataSet посочи TADOQuery. След това се разпределят TDBGrid компонент и собственост DataSource посочи TDataSource.

Сега всичко се добавят всички нашата област. За да направите това, трябва да активирате молбата ни и връзка. TADOConenction компонент имот - свързан настроен True. и имот TADOQuery компонент - SQL. напишете следната заявка

Благодарение Andrey53. Cool пример. И аз просто не съм опитвал, не работи. Оказва се, точно като всички брилянтен. Вие на информацията от сайта на бази данни, достатъчни за Mighty учебник. И мисля, че ако можем да публикува, той щеше да се ползват популярност, поне сред начинаещи (най-малко). Благодарим Ви за помощта да се разбере и не оставя въпроса без отговор.

Опитах се отново
Процедура TForm1.ADOQuery1CalcFields (набор от данни: TDataSet);
започвам
ADOQuery1Sum.AsInteger: =
ADOQuery1Values.AsInteger * ADOQuery1Count.AsInteger;
приключи;
летящ грешки, но също така и в източник всички писмени и работи.
Опитах се да се регистрирате колоните в области,
започвам
AdoQuery1.Fields.FieldByName ( "Изток") asInteger :. =
AdoQuery1.Fields.FieldByName ( "Parish") asInteger-AdoQuery1.Fields.FieldByName ( "консумация") asInteger ..;
приключи;
Той заслужи.
Може би той е бил на руски името на прокълнат,
или на факта, че вместо обичайната Grida използвам DBGridEh?

Не, това, че вместо стандартната мрежа DBGRidEh използвате, не е проблем, но поне прелетя някаква грешка?

Здравейте благодаря ви много за статията.
Помогнете моля Все още не съм добра база данни и не мога да разбера къде да бъде запазен в размер на сумата от двете полета?
В полето за достъп, който е създаден от Delphi 7, съответно, и нямат ценности, също не са налице. Отварям стойност програма е.
Възможно ли е да го направите в Access записани изчислените стойности?

Да, това е възможно, те трябва да са лесни за поддръжка, ADOQuery.Post

Не ми е ясно, но в Делфи може да се определи броя на дните в месеца, в зависимост от този номер, можете да създадете таблица в базата данни с правилния брой редове!

Друг начин, по който в DBGrid (DBGridEh) организира колона, която показва изчислената стойност, или по принцип всяка друга линия.
Високоговорителите списък DBGrid създаден друг, който не е свързан с всяка област на таблицата с данни.
В случай OnDrawColumnCell решетки на технологични процеси за обработка на данни се случи, получаване и извеждане на резултата:
процедура TForm1.DBGrid1DrawColumnCell (Sender: TObject; конст Rect: TRect;
DataCol: Integer; Колона: TColumn; Състояние: TGridDrawState);
Var
Г. низ;
R. TRect;
започвам
ако Column.Index = 6 след това започва // индекса на допълнителна колона
// отчети или други компютри
R: = Rect;
InflateRect (R, 0, -2);
DrawText (DBGrid1.Canvas.Handle, PChar (D) -1, R, DT_Center);
приключи;
приключи;

Недостатъкът е, че дисплеят на резултатите не могат да се използват на друго място в програмата. Но също така и ситуации, в които не се нуждаят от достатъчно.

И вие може по някакъв начин да филтрирате по изчисленото поле? Опитах се, не е работа!
Int п;
п = 2500;
ADOTable1-> Филтриран = фалшива;
ADOTable1-> Филтър = «(Работи = '« + IntToStr (п) + »)»;
ADOTable1-> Филтриран = вярно;
DBChart1-> RefreshData ();>

Невярно е "работа" - изчислява!
Благодаря предварително!

Свързани статии

Подкрепете проекта - споделете линка, благодаря!