Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Retrieve / 13 сообщений из 13, страница 1 из 1
02.11.2007, 11:12
    #34912383
Voitovych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
Выбрать записи у которых табельный номер 201 и дата = 21-го октября 1978
Хочу сделать редактирование таблицы согласно главы 10
В книге PB 5.0 , стр. 243 Без кнопок Retrieve and Update.
Для этого использую переменную структура strResponse2 для
Получения табельного номера ‘Tn’ и даты ‘date_1’
Не могу создать the SQL SELECT, based on the date returned .
как правильно сформировать содержимое строки
where_clause ?
Т.е. как правильно создать содержимое строки
where_clause ?
Ниже object DataWindow не в графическом виде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
SELECT "assign_5"."tn",   
         "assign_5"."date_1",   
         "assign_5"."codedepart",   
         "assign_5"."department",   
         "assign_5"."position",   
         "assign_5"."salary",   
         "assign_5"."argument"  
    FROM "assign_5"   
Объектные переменные:
Public:
   Date     id_returndate    // the date
   Integer  ii_returncode    // return code:
                                     //     = - 1  for "Cancel"
                                     //     =  0   for blank date
                                     //     =  1   for valid date
String is_origsql    // original SQL SELECT statement

Teкст сценария:
String ls_msg		// error message
String ls_sql		// the new SELECT statement
String ls_where	// WHERE clause
string return_status  // какая кнопка в окне отклика была нажата: OK or Cancel
ii_returncode = - 1 	      // assume "Cancel"

dw_master.reset()
string rc, mod_string
integer rc
string where_clause
dw_master.SetTransObject(SQLCA)
is_origsql = &
        dw_master.Describe("DataWindow.Table.Select")
// Remove the DataWindow's SELECT statement
dw_master.Modify("DataWindow.Table.Select = ''")

вариант_1:
where_clause = 'where Tn = '  + string(strResponse2.tn) + ' and date_1 = "' + &
string(strResponse2.date_1,"dd-mm-yyyy") + '"'
вариант_2:
where_clause = 'where Tn = '  + string(strResponse2.tn) + ' and date_1 = "' + &
string(strResponse2.date_1,"yyyy-mm-dd") + '"'

mod_string = "DataWindow.Table.Select='" &
        + is_origsql + where_clause +  "'"  

dw_master.SetSqlSelect(mod_string )  
rc = dw_master.Modify(mod_string) // 0211.2007

IF rc = "" THEN
        dw_master.Retrieve( )
ELSE
        MessageBox("Status", "Modify Failed" + rc)
END IF
...
Рейтинг: 0 / 0
02.11.2007, 12:19
    #34912707
oleg_shishkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
если Tn строковая переменная, то правильней будет заключить строковую переменную в одинарные кавычки
where_clause = "where Tn = '" + string(strResponse2.tn) + "' and date_1 = '" + &
string(strResponse2.date_1,"yyyymmdd") + "'"


заключать или не заключать дату в одинарные кавычки зависить от БД (Oracle,MS SQL,...)
формат даты желателен yyyymmdd
...
Рейтинг: 0 / 0
02.11.2007, 14:24
    #34913248
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
Хорош изголятся (дубль 2)
ls_sql='select col1, col2 from table1'
dw.setsqlselect(ls_sql)
dw.settransobject(sqlca)
dw.retrieve()
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
02.11.2007, 14:26
    #34913256
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
С учетоом сабжа
ls_orig_sql = dw.getsqlselect
ls_sql = ls_orig_sql + ' where col1 = 1'
dw.setsqlselect(ls_sql)
dw.settransobject(sqlca)
dw.retrieve()
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
02.11.2007, 18:10
    #34914248
Voitovych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
попрбую ещё ВАШИ СОВЕТЫ, СПАСИБО,
ПРОБУЮ СОГЛАСНО примерУ ch10.pbl – глава 10, находящемся на
компакт диске, поставленном к книге PB5.0
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
String ls_msg		// error message
String ls_sql		// the new SELECT statement
String ls_where	// WHERE clause
id_returndate = date("21-10-1978")
ii_returncode = - 1 	      // assume "Cancel"
//  Construct the SQL SELECT, based on the date returned
 ls_where = " WHERE assign_5.date_1 = '"         &
            + String(id_returndate,"yyyy-mm-dd")    &
            + "'"	// construct a WHERE clause
ls_sql = is_origsql + ls_where	   // the new SQL statement

//  Assign the new SELECT statement to the DataWindow
IF dw_master.SetSqlSelect(ls_sql) <>  1  THEN
//   MessageBox("Error",                                             &
//              "Unable to change the DataWindow's SELECT to:~n~n" + &
//              ls_sql, StopSign!)

//  IF SetSqlSelect fails, try Modify, which is more forgiving

   IF ls_where <> "" THEN
    ls_where = " WHERE assign_5.date_1 = '"         &
               + String(id_returndate,"yyyy-mm-dd")    &
               + "'"		// construct a WHERE clause
      ls_sql = is_origsql + ls_where	// the new SQL statement
   END IF

   ls_msg =dw_master.Modify("DataWindow.Table.Select=~"" + ls_sql + "~"")
   IF ls_msg <> "" THEN
      MessageBox("dw.Modify Error", ls_msg, StopSign!)
      RETURN
   END IF
END IF
//  Retrieve the rows for the selected date
wf_Retrieve(False)      // retrieve the rows
dw_master.SetFocus()         // set focus on the DataWindow
...
Рейтинг: 0 / 0
02.11.2007, 18:26
    #34914295
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
Попробую угадать
СУБД - sybase
значит дата конвертится так

ls_sql = " where date_col =convert(datetime,'01.02.2007',104) "
СУБД Oracle
ls_sql = " where date_col = to_date('01.01.2007','dd.mm.yyyy') "
можно еще воспользоваться CAST
И если можно пользуйся get- и setsqlselect
через modify все должно выглядеть по-другому
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
03.11.2007, 11:10
    #34914866
Voitovych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
авторХорош изголятся (дубль 2)
ls_sql='select col1, col2 from table1'
dw.setsqlselect(ls_sql)
dw.settransobject(sqlca)
dw.retrieve()

Код: plaintext
1.
2.
3.
4.
5.
6.
ls_sql='select Tn, date_1 from assign_5'
dw_master.reset( ) // да, чистит.
// return
dw_master.setsqlselect(ls_sql)
dw_master.settransobject(sqlca)
dw_master.retrieve()
return
...
Рейтинг: 0 / 0
03.11.2007, 15:03
    #34915098
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
Человек! А ты читаешь текст ошибок?
А там написано "колво колонок не совпадает".
Ни на какие мысли не наводит???
--
колво и типы колонок в sql и datawindow разное. а должны совпадать.
...
Рейтинг: 0 / 0
05.11.2007, 12:53
    #34916544
Человек5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
авторЧеловек! А ты читаешь текст ошибок?
А там написано "колво колонок не совпадает".
Ни на какие мысли не наводит???
--
колво и типы колонок в sql и datawindow разное. а должны совпадать.
Я этого не знал, считал, если было выбрано
первый раз 7 столбцов, а сейчас мне надо только 2
столбца.
СПАСИБО
...
Рейтинг: 0 / 0
06.11.2007, 16:11
    #34919467
вопрос5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
Владимир, а ради любопытства не скажете, что за систему мы всем форумом с вами разрабатываем? Так даже как-то проще на вопросы отвечать будет. :)
...
Рейтинг: 0 / 0
06.11.2007, 17:40
    #34919823
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
ужо спрашивали ;), ничего так и не ответил )
...
Рейтинг: 0 / 0
06.11.2007, 18:08
    #34919928
Voitovych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
авторВладимир, а ради любопытства не скажете, что за систему мы всем форумом с вами разрабатываем? Так даже как-то проще на вопросы отвечать будет. :)

В САМОМ НАЧАЛЕ было сказано:

Выбрать записи у которых табельный номер 201 и дата = 21-го октября 1978
Хочу сделать редактирование таблицы согласно главы 10
В книге PB 5.0 , стр. 243 Без кнопок Retrieve and Update.

авторужо спрашивали ;), ничего так и не ответил
Не ответил, т.к. нет у меня интернета.

Нет сомнения, ввод информации у Вас, разработчиков,
имеется, но . . .
...
Рейтинг: 0 / 0
06.11.2007, 18:16
    #34919967
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Retrieve
Voitovych авторВладимир, а ради любопытства не скажете, что за систему мы всем форумом с вами разрабатываем? Так даже как-то проще на вопросы отвечать будет. :)

В САМОМ НАЧАЛЕ было сказано:

авторужо спрашивали ;), ничего так и не ответил
Не ответил, т.к. нет у меня интернета.

Нет сомнения, ввод информации у Вас, разработчиков,
имеется, но . . .

Вовик, бес тебя форум бы умер. Пеши еще...
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Retrieve / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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