Перейти к содержимому

Фотография

передать массив в запрос


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 Nastassia

Nastassia

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 07 ноября 2008 - 13:16

Помогите передать массив в запрос или может кто нибудь знает другое решение....
На шаг раньше с помощью web_reg_save_param были собраны SelectionId (массив)
  • 0

#2 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 08 ноября 2008 - 03:37

Чисто технически (если имя параметра-массива, например, Array) сослаться на его элементы вы сможете как {Array_1}, {Array_2} и т.д. То есть будет что-то вроде

<SelectionId>{Array_1}</SelectionId>

Другое дело как вы будете узнавать какой элемент массива на какое место в запросе надо подставить. Но это уже логика приложения, которая должна быть вам известна.
  • 0
Дмитрий Шевченко

HP Software

#3 Nastassia

Nastassia

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 09 ноября 2008 - 10:54

В том то и основной вопрос: просто подставить элементы массива не совсем верно, т.к. размер массива может изменяться или быть совсем нулевым. Была мысль поступить следующим образом:

web_reg_save_param("SelectionId", "LB=:SelectionId>", "RB/DIG=</ns##:SelectionId>", "Search=All", "Ord=All", LAST );
Оно отлавливает все SelectionId....
TotalNumberOfMatches=atoi(lr_eval_string("{SelectionId_count}"));
lr_output_message(lr_eval_string("{TotalNumberOfMatches}"));
а затем циклом вызвать все элементы массива...
for( i=1; i <= SelectionId_count; i++ ){
lr_save_string("SelectionId_","MySelectionId_");
lr_save_int(i,"index");
и в самом запросе вместо элемента массива вставить: {MySelectionId_}{index}.....

Но не сработало (((
  • 0

#4 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 10 ноября 2008 - 10:30

В том то и основной вопрос: просто подставить элементы массива не совсем верно, т.к. размер массива может изменяться или быть совсем нулевым. Была мысль поступить следующим образом:

web_reg_save_param("SelectionId", "LB=:SelectionId>", "RB/DIG=</ns##:SelectionId>", "Search=All", "Ord=All", LAST );
Оно отлавливает все SelectionId....
TotalNumberOfMatches=atoi(lr_eval_string("{SelectionId_count}"));
lr_output_message(lr_eval_string("{TotalNumberOfMatches}"));
а затем циклом вызвать все элементы массива...
for( i=1; i <= SelectionId_count; i++ ){
lr_save_string("SelectionId_","MySelectionId_");
lr_save_int(i,"index");
и в самом запросе вместо элемента массива вставить: {MySelectionId_}{index}.....

Но не сработало (((


А что конкретно не получилось? Код не заработал или просто не правильно подставлялись элементы?
Спрашиваю, т.к. в принципе идея правильная...

Можете скинуть то, что у вас написано в первозданном виде :)
  • 0
Алексей Булат
Про Тестинг

#5 Jackie

Jackie

    Постоянный участник

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Москва

Отправлено 10 ноября 2008 - 13:29

Nastassia, а вы используете мультипротокол web-services + HTML?
  • 0

#6 Nastassia

Nastassia

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 10 ноября 2008 - 13:58

__________
  • 0

#7 Nastassia

Nastassia

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 10 ноября 2008 - 13:59

Нет, только HTML протокол
  • 0

#8 Jackie

Jackie

    Постоянный участник

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Москва

Отправлено 10 ноября 2008 - 14:42

Нет, только HTML протокол


Я плохо знаю веб сервисы, но по-моему, именно они у вас и есть. Попробуйте их использовать.
  • 0

#9 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 10 ноября 2008 - 15:17

...
И то что приходит в ответ: Warning: The string 'Topic_Child_Id_' with parameter delimiters is not a parameter.

С кодом все ясно... Чтобы он заработал надо сделать не простые вещи...
Во первых в свой "web_custom_request("Cobalt_19", " вы передаете не то что надо. А именно запись {Topic_Child_Id_}{index} не будет работать... Чтобы запрос сформировался правильно, нужно будет совершить ряд преобразований:
1. получить значение массива с необходимым вам индексом
2. найденное значение передать в текст запроса
3. передать текст запроса в сам запрос

Как это сделать, сходу не скажу, по старой причине - нет под рукой VUGen, чтобы проверить правильность...

Вот что я думаю по этому поводу...
  • 0
Алексей Булат
Про Тестинг

#10 Nastassia

Nastassia

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 10 ноября 2008 - 15:55

Странно, я тоже так думала))) только все таки мысли мои и реализация не совпадают
  • 0

#11 besh o drom

besh o drom

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • Город:Москва

Отправлено 11 ноября 2008 - 08:18

Попробуйте так:

sprintf(index,"%d",k);
sprintf(Child_Id_param, "{Topic_Child_Id_%s}", lr_eval_string(index));
sprintf(Child_Id_Val, "%s", lr_eval_string(Child_Id_param));
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных