|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
Доброго времени суток. Срочно нужна помощь знающих и понимающих ФоксПРо. Нужно обновить данные в одной таблице, на основе другой. Короче в 611.dbf есть поля id, name (и другие, которые не сильно интересуют).В другой базе splat.dbf тоже есть поле id, newname. Короче нужно в 611 изменить name на newname из splat.dbf у которых 611.id = splat.id. Вроди бы все просто, но никак не получается. Делаю так: USE ("c:\zem\611.dbf") IN 0 ALIAS table1 USE ("c:\zem\splat.dbf") IN 0 ALIAS splat UPDATE splat set splat.name = table1.newname WHERE table1.tin = splat.kod ничего не получается. В чем ошибка?? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 11:11 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
ошибочка UPDATE splat set splat.name = table1.f_fulln_u_ WHERE table1.id = splat.id ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 11:12 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
UPDATE splat set splat.name = table1.newname WHERE table1.id = splat.id ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 11:13 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyuk, Команда SQL UPDATE может изменить данные только в записях одной Таблицы. UPDATE TargetSET Column_Name1 = eExpression1 [, Column_Name2 = eExpression2 ...] [FROM [FORCE] Table_List_Item [[, ...] | [JOIN [ Table_List_Item]]] WHERE FilterCondition1 [AND | OR FilterCondition2 ...] Параметры UPDATE Target Определяет имя Базовой Таблицы, Курсора, алиаса Таблицы или Курсора, или имя файла, где выполняются требуемые изменения. Вы можете указать несколько источников данных для операции изменения в соответствующей секции FROM. Target может иметь один из следующих возможных вариантов синтаксиса: [DatabaseName!]TableName DatabaseName! определяет имя базы данных, к которой прикреплена соответствующая таблица, если она (таблица) не закреплена за текущей базой данных. Если рассматриваемая таблица не относится к текущей базе данных, вы должны обязательно указать имя родительской базы данных. В качестве разделителя-соединителя между именем родительской базы данных и именем дочерней таблицы используется восклицательный знак (!). TableName определяет имя таблицы, в которой выполняются изменения. Alias Alias определяет имя алиаса соответствующей таблицы, в которой выполняются изменения данных из источников, которые задаются в секции FROM. FileName FileName определяет имя файла, в котором выполняются рассматриваемые изменения данных. SET Column_Name1= eExpression1 [, Column_Name2 = eExpression2 ...] Определяет имя столбца в изменяемой таблице, в который заносятся новые значения. Если вы не используете секцию WHERE, каждая запись таблицы назначения будет содержать новые значения указанных столбцов. Если вы хотите использовать значения некоторых свойств объекта исходных данных в качестве expression, вы должны определить соответствующую переменную памяти для указанного объекта, а за тем ее использовать. Например, вы можете выполнить следующее x = oColField("iid").Value и, после этого, указавать конструкцию SET как set iid = x, в рассматриваемой команде UPDATE - SQL . Если вы используете следующую нотацию при обращении к свойствам объекта objectname.property, непосредственно в выражении expression, то в этом случае возникает Ошибочная ситуация; отсутствие указанного Алиаса objectname. В качестве выражения в конструкции SETможно использовать некоторый Подзапрос, возвращающий требуемое выражение. Если выполняемый подзапрос не возвращает никакого результата, то предполагается значение = NULL. Общий синтаксис и дополнительная информация о Подзапросах представлена в следующем разделе SELECT - SQL, команда - FROM, секция. Обратите внимание Если вы используете Подзапрос в секции SET, тогда вы не можете использовать Подзапрос в секции WHERE. Подзапросы в секции SET должны удовлетворять тем же условиям, как и в конструкциях сравнения или соединения. [FROM [FORCE] Table_List_Item[[, ...] | [JOIN [ Table_List_Item]]] Определяет одну или несколько таблиц данных для выполнения операции Изменения данных. Секция FROM имеет аналогичный синтаксис, как и в команде SQL SELECT, за исключением следующих ограничений: Изменяемая Таблица или Курсор не может быть включена в качестве присоединяемой таблицы при соединении типа OUTER Join. Данная операция изменения не должна "ломать" другие существующие Соединения JOIN, при выполнении операции Соединения JOIN для изменяемой таблицы. Результирующий Курсор не должен быть результатом выполнения Подзапроса. Дополнительная информацию имеется в следующем разделе SELECT - SQL, Команда. FORCE - определяет, что указанные присоединяемые таблицы обрабатываются в том порядке, в котором они указаны в секции FROM. Обратите Внимание Если опция FORCE - отсутствует, Visual FoxPro пытается оптимизировать выполнение рассматриваемой операции Изменения. Однако, Операция Изменения данных может выполняться значительно быстрее при использовании ключевого слова FORCE, в этом слечае система Visual FoxPro отключает оптимизацию операции Изменения. Table_List_Item может иметь следующий Синтаксис: [DatabaseName!]Table [[AS] Local_Alias] DatabaseName! определяет имя базы данных, к которой прикреплена таблица исходных данных, и она (таблица) не закреплена к текущей (открытой) базе данных. Если таблица исходных данных не входит в текущую базу данных, вы должны указать имя родительской базы данных. В качестве разделителя между именами родительской базой данных и дочерней таблицей используется восклицательный знак (!). Tableопределяет имя таблицы исходных данных для проведения операции Изменения. Если указанная таблица не открыта, тогда система Visual FoxPro отображает системный дталоговый бокс Открытия требуемой таблицы, для выбора необходимого файла. После открытия указанной таблицы она остается открытой после выполнения рассматриваемой операции. Local_Alias определяет локальный (внутренний) алиас исходной таблицы Table. Если вы используете локальный алиас для конкретной таблицы, вы должны всюду, в рамках команды UPDATE, использовать данный алиас при ссылке на эту таблицу. Локальный алиас может использоваться как для таблиц, так и для Курсоров. Конструкция JOIN обеспечивает задание одной или нескольких присоединяемых исходных таблиц данных для операции Изменения. Нет существенных ограничений по лимитированию количества таблиц или курсоров присоединяемых секцией JOIN в одной команде UPDATE. (Subquery) AS Subquery_Alias Определяет некоторый Подзапрос в виде стандартного оператора SELECT, который является другим оператором выборки SELECT. Дополнительная информацию по использованию Подзапросов в стандартных операторах SELECT представлена при описании секции FROM в разделе: SELECT - SQL, Команда. WHERE FilterCondition1 [AND | OR FilterCondition2 ...]] Определяет одно или несколько Условий Критерия Фильтра, который отбирает удовлетворяющие записи, в которые вносятся изменения, новые значения полей. В рассматриваемой команде не ограничивается количество логических выражений, указываемых в секции WHERE . Для отрицания логического выражения применяется логический операнд NOT. Для проверки пустого значения некоторого поля используется функция EMPTY( ). Смотрите дополнительную информацию в разделе: EMPTY( ), функция. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 11:21 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyukДоброго времени суток. Срочно нужна помощь знающих и понимающих ФоксПРо. Нужно обновить данные в одной таблице, на основе другой. Короче в 611.dbf есть поля id, name (и другие, которые не сильно интересуют).В другой базе splat.dbf тоже есть поле id, newname. Короче нужно в 611 изменить name на newname из splat.dbf у которых 611.id = splat.id. Вроди бы все просто, но никак не получается. Делаю так: USE ("c:\zem\611.dbf") IN 0 ALIAS table1 USE ("c:\zem\splat.dbf") IN 0 ALIAS splat UPDATE splat set splat.name = table1.newname WHERE table1.tin = splat.kod ничего не получается. В чем ошибка?? Код: plsql 1.
Чувствуюте разницу? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 11:48 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
Jonny540, UPDATE splat set splat.name = table1.newname WHERE splat.kod = table1.tin должно быть так у меня. но как говорили выше запрост обновляет только одну запись. как все обновить ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 12:04 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
IgorNG, я это уже понял, что обновляется только одна запись. как мне составить запрос чтобы обновит все записи. не получается что-то уменя ничего. помогите незнающему ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 12:05 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyuk, Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 12:07 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyukJonny540, UPDATE splat set splat.name = table1.newname WHERE splat.kod = table1.tin должно быть так у меня. но как говорили выше запрост обновляет только одну запись. как все обновить Ты почитай свой вопрос Какую таблицу обновить надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 12:14 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
Jonny540, ну да попутал, нужно сплат обновить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 12:17 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
alextashk, Выдает ошибку Command contains unrecognized phrase/keyword. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 12:20 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 12:25 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ, это хорошо, но у меня 7 версия, UPDATE splat set name = table1.f_fulln_u_ where SEEK (splat.kod,"table1","kod") выдает Index tag is not found. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 13:00 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyuk Версия VFP какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 13:13 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
alextashk, 7.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 13:18 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyukВладимирМ, это хорошо, но у меня 7 версия, UPDATE splat set name = table1.f_fulln_u_ where SEEK (splat.kod,"table1","kod") выдает Index tag is not found. А что, индексировать не судьба? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 15:36 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
Jonny540, А как ее сделать? я просто только второй день работаю с этим ФоксПро, на работе просто понадобилось обновить в базе около 2000 строк, так вот я и занялся им, а то как то в ручную не вариант править столько инф. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 16:24 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyuk, авторINDEX ON eExpression TO TAG kod eExpression Задает выражение индекса, которое может содержать имя поля (имена полей) из текущей таблицы. На основе этого выражения индекса в файле индекса для каждой записи таблицы создается ключ индекса. Visual FoxPro использует эти ключи для отображения записей таблицы и для доступа к ним. Вот как-то так. TAG kod - это судя по Вашему примеру ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 16:50 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
После 1-й Вашей строчки добавьте index on id to 611_id set index to 611_id ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 16:55 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
Ну и после USE ("c:\zem\splat.dbf") IN 0 ALIAS splat надо добавить типа: index on id to plat_id_ set index to plat_id_ ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 17:06 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyukя просто только второй день работаю с этим ФоксПро, на работе просто понадобилось обновить в базе около 2000 строк, так вот я и занялся им, а то как то в ручную не вариант править столько инф. Если это "чужая" база от работающего приложения, то не надо никаких индексов делать. Вообще не стоит как-то менять структуру данных. Поскольку индекса нет, то единственный вариант - это построчный перебор записей в цикле. О чем и упоминалось по приведенной ссылке. Делается это примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Это будет работать вне зависимости от того, есть индексы или нет. Просто без индексов это будет работать медленнее. Иногда существенно медленнее. Однако для 2 тысяч записей и разовой задачи - вполне приемлимое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 18:40 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
klimyuk, земля? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 20:56 |
|
Помогите с обновлением данныхв в FoxPro
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2012, 23:33 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1583655]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 262ms |
total: | 406ms |
0 / 0 |