QuerySetCell для столбца с числовым именем в ColdFusion - PullRequest
3 голосов
/ 03 августа 2011

Я пытаюсь использовать QuerySetCell, чтобы изменить значение определенного столбца в объекте запроса, и получаю эту ошибку:

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

Причина этой ошибки и ее сложность в том, что столбцы, которые я пытаюсь обновить, содержат в качестве имен некоторые целые числа, взятые из ключа / идентификатора отдельной записи. Например, запрос может содержать три столбца с именами: «6638, 6639, 6640».

Теперь я понимаю, почему происходит эта ошибка (хотя и не обязательно, почему CF имеет это ограничение), однако не могу придумать обходной путь. Дальнейшие осложнения заключаются в том, что я не могу вносить какие-либо изменения в том, как имена столбцов исходного набора запросов, и мне нужно сохранить имена столбцов и их порядок, когда я преобразую запрос в строку JSON и обновлю свою таблицу результатов, используя запрос JSONified.

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

Использование CF8 и возможность редактировать JSONified запрос после его возвращения из моего обработчика Ajax, если это имеет значение.

1 Ответ

12 голосов
/ 03 августа 2011

Вы можете использовать скобочные обозначения для установки значений в запросе (по крайней мере, вы можете это сделать в CF9 - у меня не установлен CF8 для тестирования).

Синтаксис довольно прост:

<cfset queryName[columnName][row] = "some new value" />

Из вашего примера вы можете использовать это:

<cfset myQuery["6638"][1] = "moo" />

Это установит значение столбца '6638' в первой строке равным 'moo'. Если у вас есть несколько возвращаемых строк, вам нужно установить каждую строку.

...