Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Вниз

Еще одно поле в Query 


Val   (2002-03-14 14:20) [0]

Подскажите пожалуйста, возможно ли к Query, со статическим SQL и созданным набором полей, динамически добавить поле типа fkData?



Johnmen   (2002-03-14 14:23) [1]

рой здесь :
Query.Fields.Add...



roottim   (2002-03-14 14:27) [2]

и какя дата туда писаться то будет?!!!...
что-то смутно это себе представляю



Val   (2002-03-14 14:28) [3]

Я почему, собственно спрашиваю-потому что вот так-не выходит-вылетает ошибка о несуществующем поле, используя вычисляемые, либо лукап-все путём.

QueryPositions.Close;
FD := TDateTimeField.Create(Self);
FD.FieldName := "DateInsert";
FD.DisplayLabel:="Дата оприх.";
FD.Name := QueryPositions.Name + FD.FieldName;
FD.Index := QueryPositions.FieldCount;
FD.FieldKind:=fkData;
FD.DataSet := QueryPositions;
FD.DisplayFormat := "dd.mm.yyyy";
QueryPositions.FieldDefs.UpDate;
QueryPositions.Open;



Val   (2002-03-14 14:32) [4]

у меня есть 2 квери-один(позиции)-статический и второй динамический.
И у меня происходит заполнение первого квери из второго, и вот при формировании некоторого запроса во втором, я хотел бы сформировать динамически некоторые поля в первом квери, например ту же дату.



Johnmen   (2002-03-14 14:36) [5]

>roottim : подучи синтаксис...а потом задавай всякие <?!!!>





roottim   (2002-03-14 14:39) [6]

всеравно непонятно зачем fkData... это св-во указывает на то что поле находится в НД DataSet... НД статичен... то биш кроме как поля НД, нового поля не создать...
а калкулятовские поля почему неподходят?...



roottim   (2002-03-14 14:42) [7]

2Johnmen © (14.03.02 14:36)
дата в см fkData!... ненадо все буквально пинимать!...



Johnmen   (2002-03-14 14:48) [8]

>roottim : хорошо, не буду. не надо обижаться.
>Val © :

cначала
F : TDateTimeField;

потом догадаешься сам...



Val   (2002-03-14 14:49) [9]

Вычисляемые не подходят потому что вычисления происходят на основе динамического квери, так? То есть никаких вычислений собственно и нет, а просто присваивание.
Но, допустим, я добавил позиции материала-все хорошо, но вот я формирую второй такой же запрос но к другому материалу-и всё, в статическом квери вычисляемые поля для результатов предыдущего запроса пропали, так как в новом их уже нет.



Val   (2002-03-14 14:51) [10]

>Johnmen © (14.03.02 14:48)
спасибо, FD-именно такого типа :) я просто не привел описание, думал это понятно.



Natalishka   (2002-03-14 14:52) [11]

я делаю так
на компоненту Query жму
левой кнопкой мыши там захожу в Fields Editor
там можно и создавать (так же вычесяемые поля)и удалять переименовываь!



Johnmen   (2002-03-14 14:54) [12]

м.б.
FD := F.Create(Self); ?

Я это все уже делал, да только давно - подзабыл....





Johnmen   (2002-03-14 15:00) [13]

Приношу свои извинения, и rottim тоже !
Ну конечно же ! НЕВОЗМОЖНО добавить поле, если оно не будет связано с реальным !

А фокусы с добавлением поля проходят с НД, не связанными ни с какими реальными таблицами или запросами !



Val   (2002-03-14 15:10) [14]

Ок :), я тормознул с fkData, так как это поле должно быть из реальной таблицы. Но, смотрим-fkInternalCalc-вроде как раз-то что надо - и вычисляемое и в наборе данных сохраняется,но..та же история-ошибка-поле не найдено :(



Johnmen   (2002-03-14 15:18) [15]

Ты скажи, а зачем тебе вообще это надо ?
М.б.решить твои проблемы по-другому ?



Lord Warlock   (2002-03-14 15:28) [16]

Ну вы все даете...

Val: У тебя никогда не получится работать с полями типа
fkData, fkInternalCalc , если они не связаны с
реальным полем в БД
Если внимательно читал хелп, fkInternalCalc - то же что
и fkCalculated, но данные после расчета хранятся в БД, для
чего опять та-ки нужно поле.

Так что ответ на твой вопрос - создать можно, но работать
не будет

а если хочешь динамически создать поле именно в БД, пользуй
SML



Johnmen   (2002-03-14 15:33) [17]

>Lord Warlock © : И что же мы даем и кому ? :)



Lord Warlock   (2002-03-14 15:33) [18]

Извиняюсь, не SML, a DDL - Data Definition Language
все таки под вечер клинит...



roottim   (2002-03-14 15:43) [19]

к вопросу " нет такого поля"
а где оно прикручивается... Self у тебя на что указывает?



Val   (2002-03-14 15:44) [20]

>Lord Warlock © (14.03.02 15:28)
вроде бы внимательно читал, но дело в том, что если про fkData, написано, что поле этого типа физически находится в БД, то про fkInternalCalc, написано о наборе данных(так ведь переводится dataset? ;)) вот я и подумал о наборе данных, который возвратил Query.



Val   (2002-03-14 15:56) [21]

>roottim (14.03.02 15:43)
прикручивается оно в .DataSet;



roottim   (2002-03-14 16:07) [22]

а ADD... тоже самое
калк.. -то поле должно прицепиться.. тут то вроде вопроса нет!...



Val   (2002-03-14 16:16) [23]

не понял, поясните?
Калк. цепляется нормально, но я теряю данные - при добавлении новых записей, так как в событии OnCalFields стоит присвоение этого поля из одного квери в другой - это поле во всем квери заполняется одинаковыми значениями-из последней добавленной записи.



roottim   (2002-03-14 16:26) [24]

все ясно!
то биш прицепилось... просто вроде как вылезало "филд не найден"...
блин трудно понять что там происходит с кверями...
кусочек кода где там добавляется и т.подобные вещи происходят



Val   (2002-03-14 16:44) [25]

Я выше говорил, что добавить поле fkCalculated,fkLookup-нет проблем, мне просто негде хранить значения этого нового поля из прошлого запроса.
Код его создания в у меня программе один в один. В OnCalcField:
if QueryPositions.FindField("DateInsert")<>nil then
QueryPositions.FieldByName("DateInsert").AsString:=Query.FieldByName("DateInsert").AsString;


Попробую пояснить получше суть задачи: QueryPositions-контейнер для позиций материалов, т.е. я выбираю материалы, с помощью Query,-> в QueryPositions(пробегаюсь в цикле по Query и добавляю записи в QueryPositions), и дальше идет работа уже с ним...
Так вот: в Query я выбираю также и дату оприходования, но такого поля нет в QueryPositions, поэтому его нужно как-то добавить хотя бы для отображения.



Johnmen   (2002-03-14 17:00) [26]

А зачем вообще нужен QueryPositions (по сути) ???



Val   (2002-03-14 17:06) [27]

Контейнер выбранных материалов, для занесения их в документы. То есть выбрал я водку -нажал кнопку-запрос в Query-получил 3 записи, затем сочку захотелось, выбрал сок -нажал кнопку-сработал Query - 2 записи сока - итого в QueryPositions и выпивон и закусон :))



roottim   (2002-03-14 17:24) [28]

бообщем некоторый буфер... ясно!
да я сейчас посмотрел сам с этим полем.! он действительно по всем полям пробегает при добавлении строки!.. увы видно нельзя :)...
вот чего хотел спросить... ты что используеш для коннекта?

я у себя смотрю(ODAC).. есть такая штука ка виртуальная таблица в памяти... и пример даже с ней есть!...

если через BDE то у Rx тоже есть... тока я с ними не работал..

или просто можно в твоей буферной таблице добавить пару(навсякий) VARCHAR2 полей... и кода они нужны то туда кидать туда AsStrig из твоей выборки...



Johnmen   (2002-03-14 17:29) [29]

RxMemoryData



Val   (2002-03-14 17:33) [30]

Через BDE коннект.
Дело в том, что это не моя вольная разработка, а коммерческий проект, думаю дальше пояснять не надо. Просто, думалось можно приделать вот так просто :), ладно, будем мыслить дальше, спасибо всем :)



Lord Warlock   (2002-03-18 14:14) [31]

Val: или я чего-то недопонял, или ты описал задачу классического LookUp-а?



Val   (2002-03-18 14:25) [32]

если бы :)




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.77 MB
Время: 0.03 c
3-22578           ghost_by              2002-03-14 21:19  2002.04.08  
ACCESS и threads


14-22818          Alexandr              2002-02-26 11:47  2002.04.08  
две копии windows 98


1-22698           SPeter                2002-03-23 23:32  2002.04.08  
Помогите с сообщениями плиз


1-22657           Serd_hhc              2002-03-26 14:09  2002.04.08  
Как сменить текст моей консольной проги.


4-22883           Turalyon              2002-02-05 11:45  2002.04.08  
Текст заголовка окна