02.09.2004, 16:05 | #1 |
Участник
|
Работа со строками на Х++
Всем привет!
Люди подскажите, где взять описание функций работы со строками на Х++ К примеру есть у меня строка, в которой указано название и город после буквы г. (Шарашкина контора г.Казань). Мне надо выдернуть отдельно название (до буквы г.) и город (соответсвенно после буквы г.) |
|
02.09.2004, 16:19 | #2 |
Moderator
|
АОТ->System Documentation/Functions/str*
|
|
02.09.2004, 16:21 | #3 |
Модератор
|
AOT\System Documentation\Functions\str*
Пользутесь же поиском! С Уважением, Георгий |
|
02.09.2004, 17:22 | #4 |
Участник
|
Спасибо!
Нашел функции, почитал, слепил следующую конструкцию
bankgroup.Name = StrDel(resultset.getString(1), strScan(resultset.getString(1), 'г.', 1, StrLen(resultset.getString(1))), (StrLen(resultset.getString(1)) - strScan(resultset.getString(1), 'г.', 1, StrLen(resultset.getString(1))))); //название до буквы г. Это я так вставляю, название в Банки (отсекаю все, начиная с буквы г. а resultset - это курсор), но при попытке записать подобное в базу аксапта начинает ругаться - Невозможно выполнить требуемую операцию с БД. ..хотя компиляция проходит удачно. Что может быть? |
|
02.09.2004, 17:33 | #5 |
Moderator
|
Если ругается - приводите Ваш код полностью. Вариантов может быть много - Вы не выбрали запись forupdate, не заполнили поля обязателные для заполнения и т.д.
|
|
02.09.2004, 17:39 | #6 |
Участник
|
Вот код!
Я токо начинаю - поэтому могу пропускать вполне очевидные вещи.. вообщем смотрите:
static void Job4(Args _args) { BankGroup bankGroup; Str 600 sSQL; // Строка SQL LoginProperty lp; // Объект, который передает в строку подключения информацию о логине OdbcConnection connection; // Сам объект connection Statement statement; // Объект, который позволяет выполнить SQL- команду ResultSet resultSet; // Объект, в котором содержатся полученные строки (курсор, recordset) ; lp = new LoginProperty(); lp.setDSN("My ODBC"); connection = new OdbcConnection(lp); statement = connection.createStatement(); try { sSQL = "SELECT bank, bnkkod, corrschet, code FROM partner"; resultSet = statement.executeQuery(sSQL); while (resultSet.next()) { bankgroup.Name = StrDel(resultset.getString(1), strScan(resultset.getString(1), 'г.', 1, StrLen(resultset.getString(1))), (StrLen(resultset.getString(1)) - strScan(resultset.getString(1), 'г.', 1, StrLen(resultset.getString(1))))); //название до буквы г. // bankGroup.DEL_BankCity_RU = resultset.getString(1); //город после буквы г. bankgroup.BankBIC_RU = resultset.getString(2); //бик bankgroup.BankCorrAccount_RU = resultset.getString(3); //корсчет bankGroup.BankType_RU = BankType_RU::Main; //тип банка (основной) bankGroup.BankGroupId = resultset.getString(4); //код bankgroup.insert(); // print(resultset.getString(1)); } } catch(exception::Error) { info('bad'); } } |
|
02.09.2004, 17:49 | #7 |
Moderator
|
На первый взгляд все нормально. Попробуйте посмотреть в отладчике какие значения реально вставляются в БД и попробуйте вставить такую же запись ручками через браузер таблиц. Получится или нет ?
|
|
02.09.2004, 17:56 | #8 |
Участник
|
Она ругается, потому что из ResultSet нельзя два раза доставать значение из поля с одним и тем же индексом. Из ResultSet можно доставать значения только последовательно, то есть, если вы написали
resultSet.GetString(3) то далее можно доставать значения из полей с большими индексами. Повторный вызов resultSet.GetString(3) приведет к ошибке. Вообще, вместо ODBCConnection лучше использовать CCADOConnection - там можно доставать значения в любой послежовательности и обращаться к полям по именам. |
|
02.09.2004, 18:04 | #9 |
Участник
|
Попробую завтра..
спасибо за ответы! Кстати принт тоже ту строку не понимает - видать что-то в ней не так, а если писать так bankgroup.Name = resultset.getString(1); то все нормально! Но мне надо это значение обрезать.. ладно завтра посижу.. |
|
02.09.2004, 18:08 | #10 |
Moderator
|
Действительно. Я не доглядел.
Цитата:
Но мне надо это значение обрезать.. ладно завтра посижу..
Сделайте так: PHP код:
|
|