Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помощь з запросом / 25 сообщений из 40, страница 1 из 2
19.08.2009, 13:14
    #36152076
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
У меня есть CSP страница, на ней размещен выезжающий список(поля в базе данных)
и текстовое поле для ввода параметра запроса. В списке выбирается поле, по которому будет
производится поиск. Есть два вопроса:
1) Можно ли это реализовать одним запросом? Или прийдется для каждого поля писать свой?
2)Как можно сделать "нечеткий поиск"?, то есть,например,вхождение строки в подстроку или
примерное совпадение полей.
Заранее спасибо
...
Рейтинг: 0 / 0
19.08.2009, 13:25
    #36152112
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Можно все сделать одним динамическим запросом...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
19.08.2009, 13:37
    #36152155
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
а можно попдробнее, а то я еще в запросах не особо разбирался.
И еще один вопрос: на страницах вместо русского текста белеберда отображается.
Пытался сделать что то вроде:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
но оно пишет что нет такого ЧарСета, а нужен именно этот.
...
Рейтинг: 0 / 0
19.08.2009, 13:40
    #36152164
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
может все таки windows-125 1
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
19.08.2009, 13:43
    #36152176
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
и 1251 пробывал, тот же результат, переброывал все русские кодировки которые есть в ФФ.
...
Рейтинг: 0 / 0
19.08.2009, 14:02
    #36152243
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
GreenBeretа можно попдробнее
С тебя тестовый пример... С описанием чего из этого нужно получить...
...
Рейтинг: 0 / 0
19.08.2009, 14:43
    #36152394
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Есть страница:
автор
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
</head>
<body>
Stranica zaprosa</br>
<FORM name="Form1">
<SELECT NAME=Field>
<OPTION VALUE=NumberDoc SELECTED> Nomer Documenta
<OPTION VALUE=NameDoc>Nazvanie Documenta
<OPTION VALUE=Object>Nazna4enie
<OPTION VALUE="TechHar->Text"> Texnicheskaya xarakteristika
<OPTION VALUE="TechHar->Adv"> Preimushestvo
<OPTION VALUE="TechHar->Sertific"> Sertificat cachestva
<OPTION VALUE="TechHar->Stage"> Stadiya osvoeniya
<OPTION VALUE="TechHar->Results"> Resultati ispitaniy
<OPTION VALUE="TechHar->Effect"> Texniko ekonomicheskiy effect
<OPTION VALUE="Org->Name"> Nazvanie organizacii
<OPTION VALUE="Org->MailAdress"> Po4toviy ardres Org
<OPTION VALUE="Org->Phone"> Telefon Org
<OPTION VALUE="Org->Faks"> Faks org
<OPTION VALUE="Org->EMail"> E-Mail org
</SELECT>
Uslovie poiska
<INPUT NAME="SearchFor">
<INPUT TYPE="submit" name="But" VALUE="Choose">
<CSP:IF CONDITION='%request.Get("But")="Choose"'>
<table BORDER="1">
<CSP:QUERY name="query" classname="NTDU.NewTechMain" queryname="DevQuery">
<CSP:WHILE Condition="query.Next()">
<Caption>Results</Caption>
<TR>
<TD WIDTH="30%">"
#(query.Get("NameDoc"))#
</TD>
<TD WIDTH="30%">"
#(query.Get("NumberDoc"))#
</TD>
<TD WIDTH="30%">
#(query.Get("Object"))#
</TD>
<TD WIDTH="10%">
<A href="Dev.csp?oid=#(query.Get("ID"))#">More</A>
</TD>
</TR>
</CSP:WHILE>
</table>
</CSP:IF>
</FORM>
</body>
</html>

После нажатия клавиши Choose из списка Field должно братся значение, после чего
в базе с главным класом NewTechMain:
автор
/// Головний клас бази даних.
/// Науково-технічні досягнення
Class NTDU.NewTechMain Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{

/// Дата наджодження До БД
Property DateBirth As %String(MAXLEN = 50);

/// дата наджодження до центру
Property DateCome As %String;

/// Відомості про винахід
Property Device As Device;

/// Форми та умови передачі
Property FormDep As FormsOfDeployment;

/// Рубрика ГРНТІ
Property GRNTI As %String(MAXLEN = 200);

/// Данні про винахідника
Property Izobr As Izobretatel;

/// Ключові слова
Property KeyWords As %String(MAXLEN = 200);

/// Назва документу
Property NameDoc As %String(MAXLEN = 200);

/// Номер Документу
Property NumberDoc As %String;

/// Призначення продукціі
Property Object As %String(MAXLEN = 200);

/// Організація
Property Org As Organization;

/// Сфера застосування
Property Sphere As %String(MAXLEN = 200);

/// Розділ науки та техніки
Property ScienceDirec As %String(MAXLEN = 200);

/// Технічна характеристика
Property TechHar As TechChar;

/// УDК
Property UDK As %String(MAXLEN = 200);

Query DevQuery() As %SQLQuery
{
SELECT NameDoc,NumberDoc,Object,"Org->EMail","Org->Faks","Org->MailAdress","Org->Name","Org->Phone","TechHar->Adv","TechHar->Effect","TechHar->Results","TechHar->Sertific","TechHar->Stage","TechHar->Text" FROM NewTechMain
WHERE NumberDoc="00-003-06"
ORDER BY NumberDoc
}

}

должен производится запрос на выборку по выбраному полю учитывая парметры в поле "SearchFor". Доступ к полям привязаных классов
осуществляется как написано в моем запросе.
Список полей в ХТМЛ коде у Field, там где теги <Option VALUE=<имя одного из полей>>
...
Рейтинг: 0 / 0
19.08.2009, 15:33
    #36152542
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Вот что-то типа такого...

Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">

<script language='javascript'>
function fSel() {
	var o=getElementById('Field')
	var i=o.selectedIndex
	var fld=o.options[i].value
	getElementById('fSel').value=fld
	return true
}
</script>

</head>
<body>
Stranica zaprosa</br>
<FORM name="Form1" onsubmit='return fSel()'>

<input type='hidden' id='fSel' name='fSel'>

<SELECT id='Field'>
	<OPTION VALUE="NumberDoc" SELECTED> Nomer Documenta
	<OPTION VALUE="NameDoc">Nazvanie Documenta
	<OPTION VALUE="Object">Nazna4enie
	<OPTION VALUE="TechHar->Text"> Texnicheskaya xarakteristika
	<OPTION VALUE="TechHar->Adv"> Preimushestvo
	<OPTION VALUE="TechHar->Sertific"> Sertificat cachestva
	<OPTION VALUE="TechHar->Stage"> Stadiya osvoeniya
	<OPTION VALUE="TechHar->Results"> Resultati ispitaniy
	<OPTION VALUE="TechHar->Effect"> Texniko ekonomicheskiy effect
	<OPTION VALUE="Org->Name"> Nazvanie organizacii
	<OPTION VALUE="Org->MailAdress"> Po4toviy ardres Org
	<OPTION VALUE="Org->Phone"> Telefon Org
	<OPTION VALUE="Org->Faks"> Faks org
	<OPTION VALUE="Org->EMail"> E-Mail org
</SELECT>
Uslovie poiska
<INPUT type='text' NAME="SearchFor" value='#($g(%request.Data("SearchFor",1)))#'>
<INPUT TYPE="submit" name="But" VALUE="Choose">

<CSP:IF CONDITION='%request.Get("But")="Choose"'> 

<table BORDER="1">
<Caption>Results</Caption>

<script language='Cache' runat='server'>
	s fld=%request.Data("fSel", 1 )
	s val=%request.Data("SearchFor", 1 )
	s sql="SELECT NameDoc,NumberDoc,Object,Org->EMail,Org->Faks,Org->MailAdress,Org->Name,Org->Phone,TechHar->Adv,TechHar->Effect,TechHar->Results,TechHar->Sertific,TechHar->Stage,TechHar->Text "
	s sql=sql_"FROM NewTechMain "
	s sql=sql_"WHERE "_fld_"=? "
	s sql=sql_"ORDER BY "_fld
	s ors=##class(%ResultSet).%New("%DynamicQuery:SQL")
	s ok=ors.Prepare(sql)
	s ok=ors.Execute(val)
	while ors.Next() {
		&html<<TR>>
		&html<<TD WIDTH="30%">#(query.Get("NameDoc"))#</TD>>
		&html<<TD WIDTH="30%">#(query.Get("NumberDoc"))#</TD>>
		&html<<TD WIDTH="30%">#(query.Get("Object"))#</TD>>
		&html<<TD WIDTH="10%"><A href="Dev.csp?oid=#(query.Get("ID"))#">More</A></TD>>
		&html<</TR>>
	}
	d ors.Close()
	k ors

</script>
</table>

</CSP:IF>
</FORM>
</body>
</html>

Это конечно не вокал... Это только эскиз к вокалу... (с) к/ф В бой идут одни старики
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
19.08.2009, 16:21
    #36152725
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
немного подправил и теперь работает.
Спасибо большое!
...
Рейтинг: 0 / 0
19.08.2009, 16:29
    #36152761
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Возникла еще пара вопросов:
1)s sql=sql_"WHERE "_fld_"=? " что значит эта строчка? что параметром будет
то что я укажу в ors.Execute()?
2)Как все таки сделать нечеткий поиск, хотя бы на вхождение как подстроки
...
Рейтинг: 0 / 0
19.08.2009, 16:30
    #36152765
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Ну вот и чудненько...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
19.08.2009, 16:38
    #36152798
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
GreenBeret1)s sql=sql_"WHERE "_fld_"=? " что значит эта строчка? что параметром будет
то что я укажу в ors.Execute()?

Да. Там таких "?" можно наставить и больше, а потом в экзекюте указать их через запятую...

GreenBeret2)Как все таки сделать нечеткий поиск, хотя бы на вхождение как подстроки

Как вариант добавить еще поля для выбора "Равно" или "Содержит" и "задинамить" формирование замого условия

Код: plaintext
1.
2.
s sql=sql_"WHERE "_fld_"=? "
// или
s sql=sql_"WHERE "_fld_" LIKE ? "

В случае "Содержит" можно применять "%". Типа "%ВАНОВ", "%ВАН%", "ИВАН%"...
...
Рейтинг: 0 / 0
19.08.2009, 17:09
    #36152904
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
что то ваш JavaScript не работает, передает пустую строку в поле hidden
...
Рейтинг: 0 / 0
19.08.2009, 18:05
    #36153087
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
решил проблему, во-первых с именами-у вас и метод и хиден элемент имеют одинаковое имя.
не знаю принципиально ли это, но я их переименовал.
Более важно то, что вместо getElementById надо использывать document.getElementById
Ну еще точки с запятой поставить надо, но я не уверен что это обязательно
...
Рейтинг: 0 / 0
20.08.2009, 08:44
    #36153686
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
GreenBeretБолее важно то, что вместо getElementById надо использывать document.getElementById
Ну да.
Я же предупредил что это не вокал... Отдал т.с. с листа... Как идею.
...
Рейтинг: 0 / 0
20.08.2009, 10:09
    #36153839
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
А вы не знаете, можно ли в скрипте Каше метод как то прописать?А то я использывал и ключевое
слово function,и method - не работает
...
Рейтинг: 0 / 0
20.08.2009, 10:20
    #36153869
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Поясните, что имеете ввиду? Какой метод?
...
Рейтинг: 0 / 0
20.08.2009, 10:25
    #36153881
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
GreenBeretможно ли в скрипте Каше метод как то прописать?
Можно.

Код: plaintext
1.
2.
3.
4.
5.
// классовый метод
d ##class(MyClass).MyMethoh()
// метод экземпляра
d ##class(MyClass).%OpenId(MyId).MyMethoh()
// метод созданный на странице
d ..MyMethod()
...
Рейтинг: 0 / 0
20.08.2009, 11:18
    #36154106
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Я имел ввиду метод в том понимании, как в скрипте Джава. Спасибо krvsa
...
Рейтинг: 0 / 0
20.08.2009, 11:53
    #36154248
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
GreenBeret , кащейский скрипт в csp-странице ничем не отличается от текста программы... Там же можно сделать и методы...
...
Рейтинг: 0 / 0
20.08.2009, 16:02
    #36155054
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Появился вопрос-как сделать что б список SELECT не возвращал свое значение на исходное?
То-есть я выбрал 2-ой пункт и он после нажатия кнопки остается выбраным
...
Рейтинг: 0 / 0
20.08.2009, 16:21
    #36155120
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Как вариант...
Но событие

Код: plaintext
1.
2.
<body onload=''>
...
</body>

Подвесить функцию, которая будет читать из скрытого поля значение и "селектить" option с таким же значением value...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
20.08.2009, 16:23
    #36155126
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Или сам селект формировать скриптом опираясь на реквест скрытого поля...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
20.08.2009, 16:44
    #36155198
GreenBeret
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Пробывал по всякому, уже и такое писал:
s %request.Data("Field",1)=fld, fld-значение скрытого поля
но на сколько я понял оно не может найти параметр "Field", там какае то специфиическая
структура
...
Рейтинг: 0 / 0
21.08.2009, 05:30
    #36155852
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь з запросом
Ээ, а зачем вы реквесту присваиваете поля? их оттуда нужно только брать.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помощь з запросом / 25 сообщений из 40, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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