powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как лучше поступить?
29 сообщений из 29, показаны все 2 страниц
как лучше поступить?
    #33387084
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создаю курсор create cursor my_curs1 (a c(50), b C(10), d C(50), d C(10))
есть таблица в которой все поля мемо. Из них считываю значения по строчно (код считывания есть). не знаю как лучше заносить в курсор записи. или через массив (insert) или через вечный replace построчно. посоветуйте плиз что эффективнее и лучше! Может есть какие-то другие предложения?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33387168
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А параметризованные LV/RV не подойдут?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33387524
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что это? И как Это использовать?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33387545
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийА что это? И как Это использовать?

Похоже я недопонял вопроса. Это ты мемо поля парсишь в обыкновенные?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33387549
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. но как лучше и эффективнее это сделать?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33387714
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, не понятно что Вам надо посоветовать... Если вопрос о том, что быстрее append blank + replace or Insert, то вроде как Insert считается быстрее...
...
Рейтинг: 0 / 0
как лучше поступить?
    #33388473
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

memo поля нуждаются в преобразовании или нет? Если нет (и версия фокса
позволяет) то логичнее всего написать
INSERT INTO my_curs1 (...) SELECT ... FROM my_table. Если фокс слишком
древний - то SELECT ... INTO CURSOR tmp1 + APPEND FROM DBF("tmp1") - т.е.
через промежуточный курсор. Также может пригодится способ "хитрого" UNION
запроса описанный Владимиром Максимовым в теме
http://www.sql.ru/forum/actualthread.aspx?tid=236236 я не понимаю
чего ты там не понял - вроде всё прозрачно...
Если преобразования нужны, но они тривиальные, или осуществляются через
UDF - то просто в верхней команде после SELECT нужно не просто поля
перечислить, а соответствующие функции конвертации.
Если же преобразования нетривиальные, и скажем из одной записи с memo-полями
должно получится несколько записей в курсоре - то тогда SCAN цикл (возможно
с вложенным внутри FOR или DO WHILE циклом) с переносом данных через INSERT
INTO my_curs1 (...) VALUES (...) - ну или если ты "разбираешь" memo поля в
многострочный массив - то APPEND FROM ARRAY ...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как лучше поступить?
    #33389733
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C этим понятно, спасибо.
такой вопрос. что здесь не хватает? чтоб этот код заработал
ValLine1 = '1'
select frt
replace fil with select alltrim(feild_name) from urep_filter where nrec = val(ValLine1)
...
Рейтинг: 0 / 0
как лучше поступить?
    #33390207
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийC этим понятно, спасибо.
такой вопрос. что здесь не хватает? чтоб этот код заработал
ValLine1 = '1'
select frt
replace fil with select alltrim(feild_name) from urep_filter where nrec = val(ValLine1)
Возможностей FoxPro. ТАК оно работать не будет вообще. Если в таблице urep_filter есть индекс по полю nrec, то можно написать так:

Код: plaintext
1.
2.
3.
select frt
REPLACE fil WITH AllTrim(urep_filter.Field_name) ;
	FOR SEEK(VAL(ValLine1),"urep_filter","nrec")
...
Рейтинг: 0 / 0
как лучше поступить?
    #33390608
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ВладимирМ
делаю так как Вы написали. Результат: в курсоре после проведения кода в курсор загоняеться только одно значение во всех строках. т.е. когда дело доходит до последнего значения которое загоняеться в ValLine1, то все строки содержат запись вот этого последнего значения.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33390915
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда объясните, что именно Вы хотите получить в результате.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33390923
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу чтоб по совпадению значений в VAL(ValLine1) и в urep_filter.nrec заносилось значение AllTrim(urep_filter.Field_name). Оно работает, НО, когда она находит совпадение, то замещает значением AllTrim(urep_filter.Field_name) все строки!. Вот в чем проблема.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33391202
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

> replace fil with select alltrim(feild_name) from urep_filter where nrec =
> val(ValLine1)

REPLACE ... FROM ... WHERE ...

Господи, ну откуда можно было взять столько откровенной чуши. Вы хоть
изредка удосуживаетесь в хелп заглянуть, или просто пишете чего в голову
взбредёт, а потом хотите чтобы вам растолковали почему оно не работает?
Ошибка синтаксиса - вот и не работает.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как лучше поступить?
    #33392076
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Igor Korolyov
Я хелп читал. много вариантов перепробывал. пытаюсь по Вашему примеру, все равно ругаеться что неправильно.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33393611
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийЯ хочу чтоб по совпадению значений в VAL(ValLine1) и в urep_filter.nrec заносилось значение AllTrim(urep_filter.Field_name).

КУДА должно заноситься это значение?

Если это значение должно заноситься в другую таблицу, то КАКУЮ именно ЗАПИСЬ из таблицы urep_filter надо брать для записи в эту другую таблицу.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33393619
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

Если хелп читали - то укажите цитату, откуда был взят такой синтаксис. Если
Вам кто-то такое тут посоветовал - укажите где Вам это было предложено -
ДОСЛОВНО как указано в сообщении за 21 ноября 2005 г. 11:41.
Я в упор не вижу нигде таких советов. А другие, правильные и вполне
работающие варианты у Вас конкретно не работают, хотя вот у меня например
всё работает и вопросов не вызывает, и к чему бы это?
Кроме того желательно всегда предельно чётко описывать задачу, а также
предоставить тестовые данные - что есть, и что из этого надо получить. При
этом оформить это (кроме конечно результата) надо как скрипт создающий
курсоры (или таблицы если это критично) и наполняющий их тестовыми данными -
т.е. CREATE CURSOR ... + группа INSERT INTO ... - дабы любой мог скопировать
это в prg файл, запустить и далее экспериментировать.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как лучше поступить?
    #33394040
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ВладимирМ
значение должно заноситься в строку курсора 'frt' поля 'fil'
таблица urep_filter имеет много полей и в ней есть поля : nrec(I) - код записи, Field_name(C) - название столбцов. записи нужно заносить в курсор 'frt.fil' из urep_filter.Field_name где urep_filter.nrec = ValLine1 (ValLine1 - будет иметь значния 1,7,5)
urep_filter
------------------------------
Field_name (C(40)) | nrec(I)
-------------------|----------
usd | 1
grn | 2
nds | 5
kpd | 7
------------------------------

и т.д.

to Igor Korolyov

Фокс Ваш пример обругивает как неправильный синтаксис, пробовал много вариантов и все ему не нравиться. Вы бы не могли мне привести пример кода 'REPLACE ... FROM ... WHERE ...'?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33394423
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста объясните, в примере select naimen as dds from line where есть 'as dds' который показывает результат. Как этот результат занести в переменную и не отображать на экран результат?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33395921
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, ты просто не понимаешь того, о чем тебя спрашивают.

Делаем тестовые данные

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
* Таблица, откуда будут браться данные
CREATE CURSOR tabChild (Field_name C( 40 ), nRec I)
INDEX ON nRec TAG nRec
INSERT INTO tabChild (Field_name, nRec) VALUES ("usd",  1 )
INSERT INTO tabChild (Field_name, nRec) VALUES ("grn",  2 )
INSERT INTO tabChild (Field_name, nRec) VALUES ("nds",  5 )
INSERT INTO tabChild (Field_name, nRec) VALUES ("kpd",  7 )

* Таблица, куда надо записать
CREATE CURSOR tabMain (Fil C( 40 ))
INSERT INTO tabMain (Fil) VALUES ("Строка 1")
INSERT INTO tabMain (Fil) VALUES ("Строка 2")

Предположим, я нашел в таблице tabChild запись, у которой значение поля nRec равно нужному мне значению. Например, 1.

Определил, что в найденной записи значение поля Field_Name="usd"

И вот теперь основной вопрос:

В какую запись таблицы tabMain я должен занести это найденное значение?

Как видите, записей 2. Заменять обе? Нет? Тогда какую?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33396056
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

> Фокс Ваш пример обругивает как неправильный синтаксис

Ну конечно - ты же потрудился как можно более подробно изложить свою
проблему, указал какой версией VFP пользуешься :) Или надеешься на
телепатию? Извини, но я не собираюсь гадать какая у тебя версия фокса. Не
указал - так теперь и не жалуйся что на твоей версии это не работает :)
А внятного примера исходных данных и результата так и нет - вот Владимиру не
лень - он решил погадать слегка чего же тебе нужно то получить, повытягивать
клещами информацию из тебя (можно подумать это ему надо а не тебе)... А мне
уже лень, извини...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как лучше поступить?
    #33396443
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фокс 6
to ВладимирМ

Начиная с первои и вниз до тех пор пока условия по полю nRec не закончаться.

to Igor Korolyov
Я Вас понимаю. Мне очень жаль что я не могу изложить правильно сути проблемы.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33401072
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недоходящийфокс 6
to ВладимирМ
Начиная с первои и вниз до тех пор пока условия по полю nRec не закончаться.

Не понял. Тогда что Вам не нравиться?

Я нашел в таблице tabChild запись, удовлетворяющую нужному условию. Это ОДНА запись. И заменяю ВСЕ записи в таблице tabMain, поскольку они ВСЕ удовлетворяют этому условию. Точнее, в таблице tabMain просто НИКАКИЕ условия не проверяются.

То, что Вы и хотели. Какие претензии-то? Или Вы все-таки хотели что-то другое?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33401099
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ
да наверное другое. я хотел после append blank одной строчкой replace заменить запись по условию (причем условие меняеться не меняеться только поле по которому производиться условие) из другой таблицы. + это все будет повторяться через for. Вот что я хотел. много пробывал и ничего
...
Рейтинг: 0 / 0
как лучше поступить?
    #33401127
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять ничего не понял. Давай так:

Создай у себя 2 эти таблички. Второстепенные поля не добавляй. Оставь только то, что имеет отношение к проблеме.

Добавь в эти таблички несколько записей.

Теперь сделай третью табличку, куда помести тот результат, который ты хочешь получить. Причем этот результат получен по тем тестовым данным, которые ты занес в предыдущие 2 таблички.

Все это упакуй в ZIP-архив и положи сюда во вложение.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33410637
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ

итак, проблема втом чтоб одной командой зделать действия:
1) по порядку начиная с первой строки взять значение из табл2 поля nr
2) занести в табл3 значение из табл1 поля аа по условию, что значение взятое из табл2 = значению табл1 поля сс. И как все это поместить в Replace?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33410974
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это надо?

Код: plaintext
1.
2.
3.
SELECT Table1.aa ;
FROM Table1 ;
INNER JOIN Table2 ON Table1.cc=Table2.nr

Чтобы это поместить в Replace в той таблице, которая будет модифицироваться должно быть поле, со значением Table1.cc или Table2.nr.

Т.е. нужна "связка", "указатель", определяющая какие же именно записи необходимо модифицировать. В данном случае, это условие Table1.cc=Table2.nr. А что есть в замен в твоей таблице?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33427198
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ

не мог ответить потому, что пришлось переключиться на другую работу.
Пробывал этот код он не работает. "INNER JOIN " - что это за команда. в хелпе ничего про нее нет, даже упоминания.
>>А что есть в замен в твоей таблице?
Не совсем понял вопроса. Что имеется ввиду?
...
Рейтинг: 0 / 0
как лучше поступить?
    #33427890
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийПробывал этот код он не работает. "INNER JOIN " - что это за команда. в хелпе ничего про нее нет, даже упоминания.
Это не команда. Это опция команды Select-SQL. Появилась, начиная с версии VFP3. Внимательнее читайте HELP. Или у Вас Fox2x?

Недоходящий>>А что есть в замен в твоей таблице?
Не совсем понял вопроса. Что имеется ввиду?
Это именно тот вопрос, на который Вы упорно не хотите отвечать. Весь топик разными способами от Вас пытались получить на него ответ. Вы же его просто игнорировали.

Вас не устраивает, что замена происходит во ВСЕХ записях. Тогда в каких записях должна произойти замена? В текущей записи?

Перечитайте все вопросы этого топика с самого начала. Я уже и не знаю, как Вам это по другому объяснить.
...
Рейтинг: 0 / 0
как лучше поступить?
    #33428048
Juri0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял, то просще всего так:
Берем таблицу, в которой проверяем истинность значения
select table1
scan
проверяем истинность условия
if поле1 = чему-то and поле2=что-то еще и т.д
replase .....
endif
endscan
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как лучше поступить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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