|
|
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
хачу усавершенствовать код загрузки значений с мемо полей. Как быстро можно загнать из 2-х мемо полей одной таблы в 2-ый массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 11:40:32 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
А тебе не приходило в голову, что если копирование мемо-полей в массив в стандарнтых функциях типа Scatter и Copy to Array по умолчанию отключено, то это неспроста? Такая операция может потребовать слишком много памяти. Может лучше пересмотреть алгоритм? Можешь объяснить, зачем ты используешь массивы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 11:52:59 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
массив я не использую пока. но думал. чтоб в массив загнать значения из 2-х мемо полей и вставить в курсор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 11:55:20 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
А почему сразу в курсор нельзя? Есть же Select SQL, Copy to..., Append from... Масса вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 12:35:32 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
как быстро с мемо вставить в курсор? через aline у меня прописано. может есть что-то еще уникальнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 12:41:08 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
1. Опиши задачу (без привязки к командам. Т.е. например "сохраняю пользовательские настройки", или "анализирую текстовый файл") 2. Приведи код, который работает сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 13:54:08 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
задача такова. нужно загрузить данные из 2-х мемо полей в курсор. как можно более эффективным способом. в моем коде названия полей и таблиц находяться в массиве и поочередно исполняються: for rep_memo_zagr = 3 to 4 rep_znach1 = rep_load_array(1,rep_memo_zagr) && название мемо-поля rep_znach2 = rep_load_array(2,rep_memo_zagr) && название курсора rep_znach4 = rep_load_array(4,rep_memo_zagr) && название поля курсора rep_lnRow = ALINES(laLines,&rep_znach1,.t.) *set step on if empty(&rep_znach1) rep_lnRow = 0 endif if mod(rep_memo_zagr,2) = 0 Go Top In &rep_znach2 endif FOR rep_lnI=1 TO rep_lnRow select &rep_znach2 if mod(rep_memo_zagr,2) = 1 append blank else if eof() = .t. append blank endif endif ValLine1 = alltrim(laLines[rep_lnI]) select &rep_znach2 REPLACE &rep_znach4 with ValLine1 if mod(rep_memo_zagr,2) = 0 skip endif ENDFOR endfor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 14:03:29 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
1. "Загрузить данные из мемо-полей в курсор" - это не задача, а выбранный тобой метод решения. Может быть, задача вообще не требует участия мемо-полей и курсора. 2. Как данные попадают в мемо-поля? Ты их сам туда предварительно заносишь? Если так, то может быть проще сразу сохранять их в более удобном формате? Например, в отдельных полях. 3. Какие значения могут принимать переменные rep_znach1, rep_znach2, rep_znach3 ? Если это всего два поля и два курсора, может быть проще сделать отдельную обработку для каждого из них, а не наворачивать суперуниверсальное решение для любых полей в любых курсорах? 3. Применение макроподстановки ничем не оправдано. Используй выражения имени. Работать будет быстрее и читать станет удобнее. Потому что Select &rep_znach2 может означать что угодно, например команду Select SQL. 4. У тебя в цикле два раза встречается команда select &rep_znach2, и нигде нет переключения на другую рабочую область. Может быть делать установку рабочей области один раз перед циклом? 5. Вложенные if вполне можно заменить одним if mod(rep_memo_zagr,2) = 1 or EOF() Думаю, если подсократить код, наконец удасться понять логику работы. Сейчас, честно говоря, ничего не понятно, что имеено ты делаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 17:51:32 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
задача требует. В мемо храняться список значений которые используються для фильтра. и мне нужно из мемо в курсор забросить. В мемо я их програмно закидываю записывая каждое значение с новой строки chr(13) rep_znach1, rep_znach2, rep_znach3 - принимают только символьные, эти значения загружаються из массива который объявлен public. и в нем храняться названия полей и таблиц. этот массив я использую для сохранения значений в мемо. по-поводу переменной я согласен. но факт в том что циклы у меня для разных полей одинаковы и повторно копировать код .... нето. так за счет for автоматом считываеться нужные значения из массива поповоду переключения на другую область нету я согласен поповоду if спасибо. даже не подумал вот так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 18:44:01 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
Hi Недоходящий! - Как проехать в Киев? - Надо поехать поездом в Ленинград, оттуда на пароходе в Нью-Йорк. Ну а из Нью-Йорка есть прямой самолёт на Киев. Тебе не кажется, что вместо того чтобы по простому хранить каждый элемент фильтра в отдельной записи, ввести также дополнительные поля для группировки и упорядочения этих "элементов фильтров" ты летишь в Киев через Нью-Йорк? Мне лично именно так и кажется :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 01:16:13 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
2 Igor Korolyov Это ж какая тогда таблица получиться. В моем случае юзер должен иметь возможность добовлять сколько угодно фильтров для каждого поля которые я пропишу. и как же их в строки заносить. Ведь в мемо заноси - нихачу, любое кол-во строк. а код считывания я изменил. вот новый **загрузка из мемо create cursor sav_rep_curs (for_list1 C(40),list1_nomer C(10), for_list2 C(40), list2_nomer C(10)) create cursor rep_vibor_filtr (filtr_user C(200), filtr_admin C(200)) local rep_load_name, c_srv, rep_lnRow , rep_lnI, laLines(1),laLines2(1) store '' to rep_load_name,rep_znach1 , rep_znach2 , rep_znach3 c_srv = 0 select urep_saves_spis go top for rep_nCnt = 1 to THISform.list1.ListCount IF THISform.list1.Selected(rep_nCnt) rep_load_name = alltrim(THISform.list1.List(rep_nCnt)) ENDIF endfor **поиск и загрузка в курсор LOCATE FOR ALLTRIM(urep_saves_spis.name_user) = rep_name_user .and. ALLTRIM(urep_saves_spis.name_rep) = rep_load_name DO WHILE FOUND() c_srv=RECNO() if !Found() exit else go c_srv endif CONTINUE ENDDO ******************* if c_srv > 0 select urep_saves_spis go c_srv rep_lnRow = ALINES(laLines,urep_saves_spis.name_list1,.t.) FOR rep_lnI=1 TO rep_lnRow ValLine1 = laLines[rep_lnI] ValLine2=val(ValLine1) select naimen from urep_filter where nrec=ValLine2 into cursor rep_ttemp select sav_rep_curs append blank REPLACE for_list1 with alltrim(rep_ttemp.naimen), list1_nomer with alltrim(ValLine1) endfor go top in sav_rep_curs rep_lnRow = ALINES(laLines,urep_saves_spis.name_list2,.t.) FOR rep_lnI=1 TO rep_lnRow if eof() = .t. append blank endif ValLine1 = laLines[rep_lnI] ValLine2=val(ValLine1) select naimen from urep_filter where nrec=ValLine2 into cursor rep_ttemp select sav_rep_curs REPLACE for_list2 with alltrim(rep_ttemp.naimen), list2_nomer with alltrim(ValLine1) skip endfor rep_lnRow = ALINES(laLines,urep_saves_spis.filtr_user,.t.) rep_lnRow2 = ALINES(laLines2,urep_saves_spis.filtr_adm,.t.) if empty(alltrim(urep_saves_spis.filtr_user)) rep_lnRow= 0 endif FOR rep_lnI=1 TO rep_lnRow ValLine1 = alltrim(laLines[rep_lnI]) ValLine2 = alltrim(laLines2[rep_lnI]) select rep_vibor_filtr append blank REPLACE filtr_user with ValLine1 , filtr_admin with ValLine2 endfor endif thisform.release может посоветуете внести еще какие нить изменения? меня еще интересует вопрос по locate. Можете предложить что-то еще лучше для поиска записей или этот алгоритм вполне нормальный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 10:59:10 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
Hi Недоходящий! > Это ж какая тогда таблица получиться. Нормализованная - а значит с ней гораздо проще и приятнее работать. > В моем случае юзер должен иметь возможность добовлять сколько угодно > фильтров для каждого поля которые я пропишу И что тебе мешает добавить нужное число записей? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 03:10:36 |
|
||
|
from memo to array
|
|||
|---|---|---|---|
|
#18+
2 Igor Korolyov просто в одной строчке в мемо все можно занести и не разводить кучу строк. я так думаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 10:22:09 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33405137&tid=1592891]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
211ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 577ms |

| 0 / 0 |
