Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Вниз

Dynamic Sql, Multitier и не только   Найти похожие ветки 

 
DreamDesire   (2003-05-27 10:47) [0]

Проблема вот в чем я пишу под Oracle, использую DOA. Компонент OracleDataSet на Апликейшн-Сервере позволяет создавать динмический запрос а для параметров есть у него свойство Variables. Создаю я запрос "select * from dept order by :MyOrer", соответственно создаю Variable с типом Substitute - это я в документации прочитал, что надо именно такой тип для таких параметров запроса. На клиенте ставлю ClientDataSet и пытаюсь создать параметр как на АппСервере - MyOrder. Но в чем загвоздка - типа Substitute в поле Params.DataType тут нет и нихрена не работает. Пытался подставить другие - фигушки. Потом попробовал посмотреть как это происходит при взаимодействии простого БДЕшного Query - та же песня: типы Query и ClientataSet тут вроде совпадают, но Substitute здесь нет и не работает ничего, хотя какие только типы воткнуть я не пытался. И где я не пытался найти ответа на этот вопрос - везде примеры типа "select * from sss where fff = :fff", где все просто как грабли.
Заранее благодарен за любую информацию


 
Sergey13   (2003-05-27 11:16) [1]

Единственное, что приходит на ум, это попробовать вместо прямого селекта вытаскивать данные в датасет из ХП, где входным параметром будет имя/номер поля сортировки. Геморойно слегка, но можно, ИМХО.


 
Polevi   (2003-05-27 11:16) [2]

не надо на клиенте никаких параметров

function TRDM.GetSomeQuery(AParam:integer): OleVariant;
var
Options: TGetRecordOptions;
dsp:TDatasetProvider;
RecsOut: Integer;
ds:TOracleDataset;
begin
dsp:=TDatasetProvider.Create(nil);
ds:=TOracleDataset.Create(nil);
//формируем строку запроса
try
dsp.DataSet:=ds;
ds.Open;
Options := [grMetaData, grReset]; //must specify meta data
Result:=dsp.GetRecords(-1, RecsOut, Byte(Options));
finally
ds.Free;
dsp.Free;
end;
end;


на клиенте
myClientDataset.Data:=Server.GetSomeQuery(666)


 
DreamDesire   (2003-05-27 12:06) [3]

Sergey 13
Как запасной вариант - ок, но хотелось бы сделать все красиво
Polevi
Сложновато как-то и я не понял как собственно формируется запрос - как используется AParam? Если можно поподробнее, и "не надо на клиенте никаких параметров" - то есть и на сервере не надо? - иначе (на сервере есть а на клиенте нет) ругается.

А про БДЕ Query никто не знает? - я тут покопавшись нашел подобный вопрос на форуме - в ответе на который было сказано, что Order by с параметрами нельзя - но надежда на элегнтное решение во мне все еще жива :)


 
Polevi   (2003-05-27 12:12) [4]

2DreamDesire © (27.05.03 12:06)
возможно я чето то не понял, не работал с TOracleDataset

как используется AParam - например так

dataset.Sql.Text:=Format("SELECT * FROM BlaBla WHERE ID=%d",[AParam]);

клиент получает DATAPACKET, ему наплевать каким образом он был сформирован сервером


 
DreamDesire   (2003-05-27 13:08) [5]

2 Polevi - теперь я понял суть твоего решения - это немножко не то, чего я хотел, но чувствую, что деваться некуда.
А по поводу использования AParam - я не понял где он у тебя в функции function TRDM.GetSomeQuery(AParam:integer): OleVariant;
используется - в описании есть, а в теле функции я его не нашел или я чего-то не понимаю? Разъясни, если не трудно /thanks


 
Polevi   (2003-05-27 13:26) [6]

dataset.Sql.Text:=Format("SELECT * FROM BlaBla WHERE ID=%d",[ AParam]);



Страницы: 1 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.009 c
14-60389
vidiv
2003-05-30 06:16
2003.06.19
Как из ATX блока достать 9 вольт (800ма, AC{переменный})?


14-60397
YonnyN
2003-06-01 02:24
2003.06.19
Странное поведение диалоговых окон под XP


7-60446
Zirus
2003-04-12 15:53
2003.06.19
Чтение двоичных файлов


1-60267
Analaiser
2003-06-06 08:33
2003.06.19
Помогите сделать контрольные по Дельфям!!!


3-60072
Kapitan
2003-05-28 16:59
2003.06.19
сообщение: поле ХХХ должно иметь значение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский