|
|
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Вопрос глупый но в конце рабочего дня вхожу в ступор: как выбрать значение из поля таблицы в переменную по условию? select поле from таблица where условие into переменная не прокатывает Если я чайник, я с этим согласен:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 17:09 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 17:12 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
А просто: переменная=полетаблицы, с использованием IIF,ICASE прокатит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 20:38 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Легко и не напрягаясь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 20:48 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicВопрос глупый но в конце рабочего дня вхожу в ступор: как выбрать значение из поля таблицы в переменную по условию? select поле from таблица where условие into переменная не прокатывает Если я чайник, я с этим согласен:-) select не может не прокатывать. Это как крокодилы не летают. Собственно говоря, IIF(,,) и where в запросе - одно и то-же. select * from Table where Pole='abcd' into cursor MyCur sele MyCur && Если требуется перебор scan MyVar = Pole .... что-то делаем endscan ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 21:17 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
то есть я понял, просто выбрать значение поля по условию в переменную нельзя, надо как-то изгаляться, так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 00:41 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicто есть я понял, просто выбрать значение поля по условию в переменную нельзя, надо как-то изгаляться, так? Скорее всего, Вы не совсем точно представляете себе, что Вы имеете и что хотите получить. Результатом запроса в общем случае является несколько строк, поэтому сохранить его можно только в массиве, а не в переменной, как и указал Вам проходящий. Если по выбранному Вами условию будет выбрана лишь одна строка, то и результирующий массив будет состоять лишь из одного элемента. В FoxPro к первому элементу массива можно обращаться по имени массива без индекса, т.е. как к переменной. Что Вы и хотели получить. Но если Вы уверены, что Вашему условию удовлетворяет лишь одна запись, проще воспользоваться командами LOCATE, SEEK или функцией SEEK(). С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 07:12 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Спасибо fox_vik, успокоил вообщем строку выбрал, дальше новый глупый вопрос (может быть) строка есть путь. как его задать я понял, на всякий случай, если не прав - исправьте: SET PATH TO FULLPATH(v_array) Теперь дальше. в этом каталоге находятся таблицы, сформированные при помощи foxpro2.6, карочь в них нет указания на кодовую страницу. при их открытии фокс про эту страницу спрашивает. таблиц 39. причем по замыслу приложения они будут постоянно меняться (в смысле удаляться, а на их место копироваться новые, но такие же). Как убрать этот запрос, подскажите лабуху:-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 11:42 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
и еще вопрос: а можно путь из массива использовать в selecte без предварительного set path что-нибудь типа select * from v_array\table? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 11:46 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicкарочь в них нет указания на кодовую страницу. при их открытии фокс про эту страницу спрашивает. таблиц 39. причем по замыслу приложения они будут постоянно меняться (в смысле удаляться, а на их место копироваться новые, но такие же). Как убрать этот запрос, подскажите лабуху:-)) 1. Нужен обязательно файл config.fp где была бы указана кодовая таблица... CODEPAGE=866 (но может и 1251 в зависимости от того, что Вам надо) Этот файл должен быть там откуда стартует Ваше приложение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 11:55 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicи еще вопрос: а можно путь из массива использовать в selecte без предварительного set path что-нибудь типа select * from v_array\table? Этот вопрос я не понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 11:56 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
положил туда (где файлы проекта), перезапустил фокс. спрашивает все равно. может из-за того, что пока проект? или от того что фокс 9-й? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:00 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Sergey Ch PyroTechnicи еще вопрос: а можно путь из массива использовать в selecte без предварительного set path что-нибудь типа select * from v_array\table? Этот вопрос я не понял... Ну в смысле мы можем написать select * from c:\temp\table.dbf? а как сделать чтобы в запрос вместо жесткого пути к таблице подставлялся путь из переменной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:02 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicи еще вопрос: а можно путь из массива использовать в selecte без предварительного set path что-нибудь типа select * from v_array\table?В понимании ошибка. Прежде чем использовать команду SELECT... таблицу необходимо открыть в рабочей области FoxPro. Для этого используется команда USE ... в которой и можно (повторяю можно) использовать прямой путь. Но лучше путь до таблиц прописать в CONFIG.FPW - файле строкой SET PATH ... (об этом много говорилось), либо использовать команду SET PATH и тогда можно будет использовать команду USE в которой просто указывать имя таблицы (на мой взгляд это удобнее). И так теперь таблица открыта. Вот теперь можно задавать выборку информации с помощью команды SELECT ... в которой будет использоваться только что открытая таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:11 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Извиняюсь ошибся я!!! У меня сработало: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:25 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicСпасибо fox_vik, успокоил вообщем строку выбрал, дальше новый глупый вопрос (может быть) строка есть путь. как его задать я понял, на всякий случай, если не прав - исправьте: SET PATH TO FULLPATH(v_array) Если Вы используете в последующих обращениях к таблицам их полный путь, то использовать SET PATH TO нет необходимости. Кроме того, SET PATH TO без ADDITIVE отменит предудущие команды SET PATH TO PyroTechnicТеперь дальше. в этом каталоге находятся таблицы, сформированные при помощи foxpro2.6, карочь в них нет указания на кодовую страницу. при их открытии фокс про эту страницу спрашивает. таблиц 39. причем по замыслу приложения они будут постоянно меняться (в смысле удаляться, а на их место копироваться новые, но такие же). Как убрать этот запрос, подскажите лабуху:-)) Убрать вопрос можно командой SET CPDIALOG OFF На компе, где у Вас установлен VFP9 в папке :\Program Files\Microsoft Visual FoxPro 9\Tools\CPZero\ есть файл cpzero.prg. Включите его в проект. Команда DO cpzero WITH lcFileName,866 установит в таблице, полный путь которой хранится в lcFileName, русскую досовскую кодировку. После этого, даже если в config.fpw будет установлена CODEPAGE=1251, VFP будет правильно читать досовскую таблицу. Т.е. каждый раз перед первым открытием досовской таблицы или ее использованием в SELECT выполните для нее: SET CPDIALOG OFF DO cpzero WITH lcFileName,866 и она откроется без вопросов и с правильной кодировкой. Эта кодировка сохраница в таблице и после ее закрытия. PyroTechnicи еще вопрос: а можно путь из массива использовать в selecte без предварительного set path что-нибудь типа select * from v_array\table? Можно select * from (v_array+"\tablename.dbf") либо select * from (v_array+"\"+lcTableName), если имя таблицы хранится в переменной. Естественно, пути и имена должны быть без конечных/начальных незначащих пробелов. Правильнее будет select * from (ADDBS(v_array)+lcTableName). С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:30 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Можно использовать макроподстановку: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:30 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Вот же проблема... Ну и попробуй сам! Что мешает? Код: plaintext Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:42 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Сорри за неактуальность... Отвлекся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:43 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Да, действительно: Код: plaintext 1. Но, на мой взгляд, чем это неудобно. Тем, что надо помнить перечень всех таблиц, которые учавствуют в SELECT-ах, а эти SELECT-ы могут быть сложными и использовать много таблиц. И по логике эти таблицы скорее всего надо закрывать, чтобы не засоряли. Поэтому я использую выше описанный метод и не заморачиваюсь. Т.е. если открыл таблицу командой USE, то обязательно ее закрываю. Как бы говоря операторные скобки (Begin ... End). Но на вкус и цвет друга нет. Так что каждый по своему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 12:55 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Владимир САМожно использовать макроподстановку: Код: plaintext 1. 2. Такой вариант будет работать до тех пор, пока ни встретится путь с пробелами. Например, для m.v_path=”C:\Program Files\” VFP выдаст ошибку. С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 13:05 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 13:23 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 13:26 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Лучше использовать квадратные скобки Код: plaintext Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 13:29 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
новую плюху кидаю:-) как заставить ADIR сработать на директории, отличной от текущей? в параметрах ADIR есть только ArrayName:-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 15:24 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicновую плюху кидаю:-) как заставить ADIR сработать на директории, отличной от текущей? в параметрах ADIR есть только ArrayName:-( Вам лень справку почитать? Там это ясно описано. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 15:49 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
MegaBrain, я лох. Спасибо!!!:-)))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 15:52 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
еще вопросик ! (cmd /k) unrar e -o+ "(ADDBS(v_input)+v_arcname)" "(v_work)" cmd /k - чтобы посмотреть что не так в скобках должно получаться значение пути, оно так и получается, но в командную строку передается выражение как есть, без вычисления. Как заставить вычисляться?:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 18:36 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicеще вопросик ! (cmd /k) unrar e -o+ "(ADDBS(v_input)+v_arcname)" "(v_work)" cmd /k - чтобы посмотреть что не так в скобках должно получаться значение пути, оно так и получается, но в командную строку передается выражение как есть, без вычисления. Как заставить вычисляться?:-) Здесь такой фокус не пройдет. Сначала сформируйте строку команды. Что-то вроде: Код: plaintext 1. С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 18:51 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Сорри, в Windows путь должен быть в двойных кавычках. Поэтому что-то вроде: Код: plaintext 1. Для примера у меня распаковка: Код: plaintext 1. 2. С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 18:59 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
fox_vik GREAT THANKS!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2006, 22:32 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Еще глупый вопросик нужно проверить присутствует значение из array среди значений поля из таблицы. Как лучше всего это сделать? пробовал так: USE pack_content FOR x=1 TO ALEN(v_dbfiles,1) LOCATE FOR pack_content.file_name=RTRIM(v_dbfiles(x,1),'.DBF') IF FOUND() then ? RTRIM(v_dbfiles(x,1),'.DBF')+" passed" ELSE ? RTRIM(v_dbfiles(x,1),'.DBF')+" not passed" ENDIF ENDFOR Выдает следующее: по первому значению массива - попадание, а дальше нет, потому что сравнение почему то идет только с первым значением из поля таблицы. Где не прав, подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 01:22 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Ребят, серьезно какой-то бред. Способ, который я нарисовал, четко работает с одной таблицей, но не работает с другой. не может ли это быть оттого что в таблице, где не работает, всего один столбец?:-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 14:41 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Пока все молчали, я проблему решил. нарисовалась новая: в цикле идет выборка из таблицы, которая при следующем цикле должна замениться другой (туда разархивируются зипы, см. выше) как снять блокировку с этой таблицы, не дергая другие. есть какой-нибудь вариянт окромя CLOSE TABLES? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 15:26 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicЕще глупый вопросик нужно проверить присутствует значение из array среди значений поля из таблицы. Как лучше всего это сделать? пробовал так: USE pack_content FOR x=1 TO ALEN(v_dbfiles,1) LOCATE FOR pack_content.file_name=RTRIM(v_dbfiles(x,1),'.DBF') IF FOUND() then ? RTRIM(v_dbfiles(x,1),'.DBF')+" passed" ELSE ? RTRIM(v_dbfiles(x,1),'.DBF')+" not passed" ENDIF ENDFOR Выдает следующее: по первому значению массива - попадание, а дальше нет, потому что сравнение почему то идет только с первым значением из поля таблицы. Где не прав, подскажите? Для точного сравнения без учета расширения файла я бы cделал так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 15:43 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
Спасибо, алексей. Нет дело было в том, что надо было добавить: SELECT pack_content Кто-нить может ответить на простенький вопрос по поводу закрытия таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 16:02 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
А в чем проблемма? С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 16:07 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
См. выше. открываю таблицу запросом, потом не могу закрыть чтоб другие не дергать, а надо. Уверен, что решается просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 16:16 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicСм. выше. открываю таблицу запросом, потом не могу закрыть чтоб другие не дергать, а надо. Уверен, что решается просто SELECT ... FROM .. INTO CURSOR ... NOFILTER Добавь после имени курсора слово NOFILTER С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 16:33 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
to Алексей нет не помогает. при селекте таблица захватывается фоксом, и удалить физически файл я уже не могу. таблица в базе не участвует. нужна ее перезапись неоднократно. может надо как-то с FOPEN-FCLOSE поиграться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2006, 23:50 |
|
||
|
Можно наивный вопросик
|
|||
|---|---|---|---|
|
#18+
PyroTechnicto Алексей нет не помогает. при селекте таблица захватывается фоксом, и удалить физически файл я уже не могу. таблица в базе не участвует. нужна ее перезапись неоднократно. может надо как-то с FOPEN-FCLOSE поиграться?Как раз про это я и описывал выше. Если в SELECT-е участвует таблица которая не была специально открыта командой USE, конечно Fox ее откроет в свободной рабочей области (см. HELP по команде USE). Для освобождения рабочей области используется таже команда USE Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2006, 07:04 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1590138]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
143ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 495ms |

| 0 / 0 |
