2014-02-21 4 views
0

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

Ниже приведен код, который я хочу поставить в функцию и compute_page это имя столбца:

if dw_report.Object.compute_page[ll_first_row] <> dw_report.Object.compute_page[ll_last_row] then 

Кроме того, я хочу сделать то же самое, но на этот раз установите значение столбца. Я попытался использовать SetItem(), SetText(), SetValue(), но ни одна из функций не может достичь ожидаемого результата, за исключением использования dwcontrol. Объект. имя_столбца [i] для установки значения.

Благодаря

ответ

2

Вместо того, чтобы использовать .object обозначения для доступа к колонке, используйте GetItemxxx(), например:

if dw_report.getitemnumber(ll_first_row, "compute_page") <> dw_report.getitemnumber(ll_last_row, "compute_page") then 

Просто замените "compute_page" litteral в примере с помощью аргумента строки вашей функции.

Остерегайтесь, что GetItemxx() вызова должен соответствовать фактическому типу данных столбца, поэтому нужно проверить результат dw_report.describe(ls_your_column_name+".coltype") для вызова одного из GetItemNumber(), GetItemString(), GetItemDecimal(), GetItemDate(), GetItemDatetime() или приложения будет врезаться.

+1

Вы также найдете GetItemXXX() быстрее и эффективнее памяти, чем объект. нотации. Это не будет большой проблемой, если сценарий вызывается только один раз, но в цикле над большим набором данных вы заметите разницу. – Terry

+0

Я полностью согласен с @Terry, кажется, что нота '.object' использует OLE-слой для доступа к внутренним данным datawindow и имеет тенденцию замедлять процесс обработки данных. – Seki

+0

Большое спасибо, но другой подобный вопрос: – calvinyankf