Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
Прошу сильно не ругаться-самоучка я... Вставляю в форму searchform-из стандартного класса VFP- мне нужно только =, <>, >, <, включает Изменяю свойство searchitem авторLPARAMETERS oField,oOp,oExpr LOCAL cExpr,cDataType,cOp,cFldName,cFldExpr,cRetExpr,aExprs,nTotExprs,i * Check to make sure proper parameters passed IF TYPE("m.oField")#"O" OR TYPE("m.oOp")#"O" OR TYPE("m.oExpr")#"O" RETURN "" ENDIF m.cFldName = ALLTRIM(m.oField.Value) m.cFldExpr = ALLTRIM(m.oExpr.Value) * If empty expression return empty. IF EMPTY(m.cFldExpr) AND !INLIST(m.oOp.listitemid,5,6) RETURN "" ENDIF * Get data type of field m.cDataType = aWizFList(m.oField.listitemid,2) IF m.cDataType = "C" AND THIS.chkCaseSensitive.Value = 0 m.cFldName = "UPPER("+m.cFldName+")" ENDIF * Get the operator language equivalent DO CASE CASE m.oOp.listitemid = 1 && equals m.cOp = "=" CASE m.oOp.listitemid = 2 && not equals m.cOp = "<>" CASE m.oOp.listitemid = 3 && more than m.cOp = ">" CASE m.oOp.listitemid = 4 && less than m.cOp = "<" CASE m.oOp.listitemid = 5 && is blank RETURN "EMPTY("+m.cFldName+")" CASE m.oOp.listitemid = 6 && is NULL RETURN "ISNULL("+m.cFldName+")" CASE m.cDataType = "L" && don't allow other options for logical type m.cOp = "=" CASE m.oOp.listitemid = 7 && contains m.cFldExpr = THIS.DataExpr("C",m.cFldExpr) DO CASE CASE m.cDataType = "T" RETURN "AT("+m.cFldExpr+",TTOC("+m.cFldName+"))>0" CASE m.cDataType = "D" RETURN "AT("+m.cFldExpr+",DTOC("+m.cFldName+"))>0" CASE INLIST(m.cDataType,"N","F","I","Y","B") RETURN "AT("+m.cFldExpr+",ALLTRIM(STR("+m.cFldName+")))>0" OTHERWISE RETURN "AT("+m.cFldExpr+","+m.cFldName+")>0" ENDCASE OTHERWISE nTotExprs = OCCURS(",",m.cFldExpr)+1 DIMENSION aExprs[m.nTotExprs] FOR i = 1 TO m.nTotExprs DO CASE CASE m.i = m.nTotExprs aExprs[m.i] = SUBSTR(m.cFldExpr,RAT(",",m.cFldExpr)+1) CASE m.i =1 aExprs[m.i] = LEFT(m.cFldExpr,AT(",",m.cFldExpr)-1) OTHERWISE aExprs[m.i] = SUBSTR(m.cFldExpr,AT(",",m.cFldExpr,m.i-1)+1,; AT(",",m.cFldExpr,m.i)-AT(",",m.cFldExpr,m.i-1)-1) ENDCASE aExprs[m.i] = THIS.DataExpr(m.cDataType,aExprs[m.i]) ENDFOR DO CASE CASE m.oOp.listitemid = 8 && in m.cFldExpr = "" FOR i = 1 TO m.nTotExprs m.cFldExpr = m.cFldExpr + aExprs[m.i] IF m.i # m.nTotExprs m.cFldExpr = m.cFldExpr + "," ENDIF ENDFOR RETURN "INLIST("+m.cFldName+","+m.cFldExpr+")" CASE m.oOp.listitemid = 9 && between IF ALEN(aExprs)=1 DIMENSION aExprs[2] aExprs[2] = aExprs[1] ENDIF IF ALEN(aExprs)>2 DIMENSION aExprs[2] ENDIF RETURN "BETWEEN("+m.cFldName+","+aExprs[1]+","+aExprs[2]+")" OTHERWISE RETURN "" ENDCASE ENDCASE DO CASE CASE INLIST(m.cDataType,"M","G","P","O","U") RETURN "" CASE m.cDataType = "L" IF TYPE(m.cFldName+m.cOp+m.cFldExpr) # "L" IF (AT(m.cFldExpr,"fFnN")#0 AND m.cOp # "<>") OR (AT(m.cFldExpr,"tTyY")#0 AND m.cOp = "<>") m.cFldName = "!"+m.cFldName ENDIF RETURN m.cFldName ENDIF OTHERWISE m.cFldExpr = THIS.DataExpr(m.cDataType,m.cFldExpr) ENDCASE IF EMPTY(m.cFldExpr) RETURN "" ELSE RETURN m.cFldName+m.cOp+m.cFldExpr ENDIF удаляю case 5,6,7 и 8 но при запуске при выборе "содержит"-окно ввода значения-"txtExpr" блокируется Помогите pleese ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 14:26 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
О каком классе идет речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 14:56 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
Класс Wizbtns- в нем выбираю searchclass ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 15:26 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
Посмотри события InterActiveChange для объектов cboOperators1 и cboOperators2. Там прописано, что если выбран элемент 5 или 6, то txtExpr блокируется. Т.е. это штатное поведение, которое никак не зависит от содержимого метода SearchItem() Это и логично, ведь 5 - is blank 6 - is NULL Нет предмета для сравнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 16:00 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ ОГРОМНОЕ-ПРЕОГРОМНОЕ СПАСИБО- ВСЕ ПОЛУЧИЛОСЬ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 17:20 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
Теперь у меня выходит ошибка, ести ищу "содержит" по типу Num Во вкладке dataexpr * Check for case sensitive IF THIS.chkCaseSensitive.Value = 0 m.cTmpExpr= "UPPER("+m.cTmpExpr+")" ENDIF RETURN m.cTmpExpr А если ищу символ через >,<,= Во вкладке searchitem IF m.cDataType = "C" AND THIS.chkCaseSensitive.Value = 0 m.cFldName = "UPPER("+m.cFldName+")" ENDIF Так как у меня в базе некоторые поля с цифрами заданы как символы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 11:33 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
Поняла-это от того,что я удалила chkcasesensitive , а без него если, то что изменить в программе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 11:47 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
Что за ошибка-то? Некорректное сравнение чисел, записанных как символьные строки? Так класс тут не при чем. Запусти тест Код: plaintext 1. 2. 3. 4. 5. Т.е. если числа прижаты к левому краю, то ты получишь заведомо некорректное сравнение таких строк. Надо либо переводить их в числа, либо прижимать к правому краю: PADL("1",10) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 11:51 |
|
||
|
поиск в форме-как?
|
|||
|---|---|---|---|
|
#18+
У меня три цифры и длина поля тоже 3 Просто я с фармы поиска удалила chkcasesensitive и стала вылезать ошибка, что он не найден. Вот я и хочу узнать, что нужно изменить, чтобы поиск работал без него- это конечно не принципиально,но интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 12:03 |
|
||
|
|

start [/forum/search_topic.php?author=normanski&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 668ms |
| total: | 831ms |

| 0 / 0 |
