powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Формирование строки запроса
4 сообщений из 4, страница 1 из 1
Формирование строки запроса
    #36008077
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Столкнулся с проблемой при формировании строки запроса.
Есть код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 strcountt=string(dw_list.object.countt[i]);//это вещественное число
 messagebox('1_1',strcountt);//выдает  0 , 23  до замены
 strcountt=replace(strcountt, 1 ,pos(strcountt,','),'.');//меняю в нем запятые на точки
 messagebox('1_2',strcountt);//выдает . 23  после замены
 strsum=string(dw_list.object.sum[i]-dw_list.object.sumopl[i]);
 messagebox('2_1',strsum);//выдает  10  до замены
 strsum=replace(strsum, 1 ,pos(strsum,','),'.');
 messagebox('2_2',strsum);//выдает . 10  после замены
//чтобы потом эти вещественные числа разделить запятыми в списке значений
 ssql="insert into flat.reestrdolg(sum,countt) values(strsum+","+strcountt)~;~r~n";
 execute immediate :ssql using sqlca;
Если попадается отрицательное число, replace вообще отбрасывает целую часть и знак. Что я не так делаю ?
Как мне 2 числа, например, 1,25 и -5,05 записать в строку как 'values(1.25,-5,05)' ?
Зараннее спасибо за помощь.
...
Рейтинг: 0 / 0
Формирование строки запроса
    #36008176
dvvarna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте использовать формат строки

Код: plaintext
strcountt=string(dw_list.object.countt[i], "0.00");//это вещественное число

Возможно даже и , на . менять не потребуется
...
Рейтинг: 0 / 0
Формирование строки запроса
    #36008300
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал пока что так, вроде работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 int p;
 strcountt=string(dw_list.object.countt[i]);
 p=pos(strcountt,',');
 if p<> 0  then
  strcountt=replace(strcountt,p, 1 ,'.');
 end if;
 strsum=string(dw_list.object.sum[i]-dw_list.object.sumopl[i]);
 p=pos(strsum,',');
 if p<> 0  then
  strsum=replace(strsum,p, 1 ,'.');
 end if;
...
Рейтинг: 0 / 0
Формирование строки запроса
    #36008576
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lionerЗдравствуйте. Столкнулся с проблемой при формировании строки запроса.
Есть код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 strcountt=string(dw_list.object.countt[i]);//это вещественное число
 messagebox('1_1',strcountt);//выдает  0 , 23  до замены
 strcountt=replace(strcountt, 1 ,pos(strcountt,','),'.');//меняю в нем запятые на точки
 messagebox('1_2',strcountt);//выдает . 23  после замены
 strsum=string(dw_list.object.sum[i]-dw_list.object.sumopl[i]);
 messagebox('2_1',strsum);//выдает  10  до замены
 strsum=replace(strsum, 1 ,pos(strsum,','),'.');
 messagebox('2_2',strsum);//выдает . 10  после замены
//чтобы потом эти вещественные числа разделить запятыми в списке значений
 ssql="insert into flat.reestrdolg(sum,countt) values(strsum+","+strcountt)~;~r~n";
 execute immediate :ssql using sqlca;
Если попадается отрицательное число, replace вообще отбрасывает целую часть и знак. Что я не так делаю ?
Как мне 2 числа, например, 1,25 и -5,05 записать в строку как 'values(1.25,-5,05)' ?
Зараннее спасибо за помощь.
Встречный вопрос. Почему Вы используете динамический SQL?

Чуть-чуть ответов:
1. Для замены символа в строке можно воспользоваться функцией of_GlobalReplace объекта n_cst_string из PFC.
2. Для того, чтобы выполнить update воспользоваться возможностями embedded SQL
Код: plaintext
1.
2.
3.
4.
decimal{ 2 } countt, ssum
countt = dw_list.object.countt[i]
ssum  = dw_list.object.sum[i]-dw_list.object.sumopl[i]
insert into flat.reestrdolg(sum,countt) values (: countt, :ssum)  using SQLCA;
3. Всячески стараться избегать кода, аналогичного показанному в п.2
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Формирование строки запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]