powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помощь з запросом
25 сообщений из 40, страница 1 из 2
Помощь з запросом
    #36152076
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть CSP страница, на ней размещен выезжающий список(поля в базе данных)
и текстовое поле для ввода параметра запроса. В списке выбирается поле, по которому будет
производится поиск. Есть два вопроса:
1) Можно ли это реализовать одним запросом? Или прийдется для каждого поля писать свой?
2)Как можно сделать "нечеткий поиск"?, то есть,например,вхождение строки в подстроку или
примерное совпадение полей.
Заранее спасибо
...
Рейтинг: 0 / 0
Помощь з запросом
    #36152112
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно все сделать одним динамическим запросом...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Помощь з запросом
    #36152155
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно попдробнее, а то я еще в запросах не особо разбирался.
И еще один вопрос: на страницах вместо русского текста белеберда отображается.
Пытался сделать что то вроде:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
но оно пишет что нет такого ЧарСета, а нужен именно этот.
...
Рейтинг: 0 / 0
Помощь з запросом
    #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
Помощь з запросом
    #36152176
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и 1251 пробывал, тот же результат, переброывал все русские кодировки которые есть в ФФ.
...
Рейтинг: 0 / 0
Помощь з запросом
    #36152243
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GreenBeretа можно попдробнее
С тебя тестовый пример... С описанием чего из этого нужно получить...
...
Рейтинг: 0 / 0
Помощь з запросом
    #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
Помощь з запросом
    #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
Помощь з запросом
    #36152725
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
немного подправил и теперь работает.
Спасибо большое!
...
Рейтинг: 0 / 0
Помощь з запросом
    #36152761
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла еще пара вопросов:
1)s sql=sql_"WHERE "_fld_"=? " что значит эта строчка? что параметром будет
то что я укажу в ors.Execute()?
2)Как все таки сделать нечеткий поиск, хотя бы на вхождение как подстроки
...
Рейтинг: 0 / 0
Помощь з запросом
    #36152765
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот и чудненько...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Помощь з запросом
    #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
Помощь з запросом
    #36152904
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что то ваш JavaScript не работает, передает пустую строку в поле hidden
...
Рейтинг: 0 / 0
Помощь з запросом
    #36153087
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
решил проблему, во-первых с именами-у вас и метод и хиден элемент имеют одинаковое имя.
не знаю принципиально ли это, но я их переименовал.
Более важно то, что вместо getElementById надо использывать document.getElementById
Ну еще точки с запятой поставить надо, но я не уверен что это обязательно
...
Рейтинг: 0 / 0
Помощь з запросом
    #36153686
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GreenBeretБолее важно то, что вместо getElementById надо использывать document.getElementById
Ну да.
Я же предупредил что это не вокал... Отдал т.с. с листа... Как идею.
...
Рейтинг: 0 / 0
Помощь з запросом
    #36153839
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы не знаете, можно ли в скрипте Каше метод как то прописать?А то я использывал и ключевое
слово function,и method - не работает
...
Рейтинг: 0 / 0
Помощь з запросом
    #36153869
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясните, что имеете ввиду? Какой метод?
...
Рейтинг: 0 / 0
Помощь з запросом
    #36153881
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GreenBeretможно ли в скрипте Каше метод как то прописать?
Можно.

Код: plaintext
1.
2.
3.
4.
5.
// классовый метод
d ##class(MyClass).MyMethoh()
// метод экземпляра
d ##class(MyClass).%OpenId(MyId).MyMethoh()
// метод созданный на странице
d ..MyMethod()
...
Рейтинг: 0 / 0
Помощь з запросом
    #36154106
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имел ввиду метод в том понимании, как в скрипте Джава. Спасибо krvsa
...
Рейтинг: 0 / 0
Помощь з запросом
    #36154248
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GreenBeret , кащейский скрипт в csp-странице ничем не отличается от текста программы... Там же можно сделать и методы...
...
Рейтинг: 0 / 0
Помощь з запросом
    #36155054
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Появился вопрос-как сделать что б список SELECT не возвращал свое значение на исходное?
То-есть я выбрал 2-ой пункт и он после нажатия кнопки остается выбраным
...
Рейтинг: 0 / 0
Помощь з запросом
    #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
Помощь з запросом
    #36155126
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или сам селект формировать скриптом опираясь на реквест скрытого поля...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Помощь з запросом
    #36155198
GreenBeret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробывал по всякому, уже и такое писал:
s %request.Data("Field",1)=fld, fld-значение скрытого поля
но на сколько я понял оно не может найти параметр "Field", там какае то специфиическая
структура
...
Рейтинг: 0 / 0
Помощь з запросом
    #36155852
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ээ, а зачем вы реквесту присваиваете поля? их оттуда нужно только брать.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помощь з запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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