|
|
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
есть ли возможность узнать сколько открыто таблиц и их имена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 14:47:12 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Еще вопросик. А можно ли програмно создовать связь между таблицами? т.е. если значения по одной из колонок в каждой таблице совпадают, то показывается вся остальная строка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 15:21:48 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
НедоходящийЕще вопросик. А можно ли програмно создовать связь между таблицами? т.е. если значения по одной из колонок в каждой таблице совпадают, то показывается вся остальная строка. Из Help-а для VFP30: Код: plaintext Параметры eExpression1 Задает реляционное выражение, которое устанавливает отношение между родительской и дочерней таблицами. В качестве реляционного выражения обычно используется выражение управляющего индекса дочерней таблицы. У дочерней таблицы могут быть индексы различных типов: простой индекс (.IDX), структурный составной индекс (.CDX) или независимый составной индекс. Если индекс составной, задайте соответствующий тег индекса для упорядочения дочерней таблицы; это можно сделать с помощью команды SET ORDER. Рассмотрим описанные в комментариях таблицы customer и orders. Предположим, что дочерняя таблица orders была индексирована и упорядочена по номеру клиента с помощью следующей команды: SET ORDER TO TAG cust_id Чтобы связать таблицы customer и orders отношением на базе номера клиента, выберите рабочую область, содержащую родительскую таблицу customer, или задайте рабочую область или псевдоним родительской таблицы с помощью предложения IN, а затем выдайте команду SET RELATION, задав выражение индекса в качестве реляционного выражения: SET RELATION TO cust_id INTO orders Дочерняя таблица должна быть проиндексирована, если только реляционное выражение не является числовым. Если вы выдали команду SET RELATION с реляционным выражением нечислового типа, а дочерняя таблица не была упорядочена с помощью инлекса, Visual FoxPro выдаст сообщение об ошибке. Если выражение eExpression1 числового типа, оно вычисляется при перемещении указателя записи в родительской таблице. После этого указатель записи в дочерней таблице устанавливается на записи с номером eExpression1. INTO nWorkArea1 | cTableAlias1 Задает для дочерней таблицы номер рабочей области (nWorkArea1) или псевдоним (cTableAlias1). eExpression2 INTO nWorkArea2 | cTableAlias2 ... Задает реляционное выражение (eExpression2) и дочернюю таблицу (или таблицы), с которой родительская таблица должна установить еще одно отношение. С помощью одной команды SET RELATION можно построить несколько отношений между одной родительской таблицей и различными дочерними таблицами. Перед каждым отношением необходимо ставить запятую. nWorkArea2 задает для дочерней таблицы номер рабочей области, а cTableAlias2 ѕ ее псевдоним. IN nWorkArea Задает рабочую область родительской таблицы. IN cTableAlias Задает псевдоним родительской таблицы. Предложение IN позволяет создать отношение, заранее не выбирая рабочую область родительской таблицы. Если аргументы nWorkArea и cTableAlias опущены, родительская таблица должна быть открыта в выбранной в данный момент рабочей области. ADDITIVE Сохраняет все уже существующие в текущей рабочей области отношения и создает заданное отношение. Если опустить ключевое слово ADDITIVE, все отношения в текущей рабочей области разрываются, после чего создается заданное отношение. Комментарии Перед тем как устанавливать отношение, одна таблица (родительская) должна быть открыта, а вторая (дочерняя) должна быть открыта в другой рабочей области. Связанные отношением таблицы обычно имеют общее поле. Пусть таблица customer содержит информацию о клиентах. В ней предусмотрены поля для имени, адреса и уникального номера клиента. Вторая таблица, orders, содержит информацию о заказах. В ней также имеется поле номера клиента, наряду с полями, содержащими информацию о датах и объемах поставок. Команда SET RELATION свяжет эти две таблицы отношением на базе общего поля ѕ поля номера клиента. Чтобы установить такое отношение, дочерняя таблица должна быть проиндексирована по общему полю. После того как отношение установлено, всякий раз, когда вы в родительской таблице customer будете перемещать указатель записи к записи с данным номером клиента, указатель записи в дочерней таблице orders будет перемещаться к записи с тем же номером клиента. Если в дочерней таблице не удается найти соответствующую запись, ее указатель записи устанавливается в конец таблицы. Выдав команду SET RELATION TO без аргументов, вы удалите все отношения, установленные в выбранной в данный момент рабочей области. Команду SET RELATION OFF можно использовать для удаления отдельных отношений типа родитель/потомок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 16:03:17 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Связи между таблицами , должны находиться у тебя в голове и быть выражены в тригерах по ключевым полям , индексам и прочей куйне, а SET RELATION TO , предполагает просто эффективный и простой как молоток механизм анализа этого добра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 16:07:20 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
luserСвязи между таблицами , должны находиться у тебя в голове и быть выражены в тригерах по ключевым полям , индексам и прочей куйне, а SET RELATION TO , предполагает просто эффективный и простой как молоток механизм анализа этого добра. Чисто согласен. Сначала надо продумать и оформить как следует БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 18:31:19 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Я тоже согласен! Но проблема вся в том что в моем задании нужно зделать так, чтоб любой юзер мог подключать разные таблицы и если в каких-то таблицах поля полностью одинаковые, то создается между ними связь. теперь у меня вопрос как проверять таблицы на схожесть полей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 18:54:57 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Недоходящий...Но проблема вся в том что в моем задании нужно сделать так, чтоб любой юзер мог подключать разные таблицы и если в каких-то таблицах поля полностью одинаковые, то создается между ними связь... Может поподробнее об задании . Фраза: "чтоб любой юзер мог подключать разные таблицы..." для меня непонятна. Вообще-то юзеру показывают информацию из таблиц посредством например Local View или напрямую таблицами. Почему я и сказал: "Сначала надо продумать и оформить как следует БД". Существуют понятия: реляционность, нормализация таблиц. Наверное у Вас это все уже сделано и оформлена БД. Тогда расскажите поподробнее. Или задайте конкретнее вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 19:48:13 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
to Владимир СА Хорошо. У меня есть три таблицы, в которых есть по одинаковому полю и каждая таблица выводится в свой грид. Мне нужно прописать програмно так чтоб кликнув по первому гриду по какой нить записи автоматом менялись записи в других гридах в соответствии со значением одинаковых полей. Это можно сделать через DATA Enveroutmen. Но в моем случае это нужно делать только програмно. Вам понятен мой вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 20:18:04 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
У меня еще один паралельный вопрос. Мне нужно в гриде с каждой его колонки считать название. Вот мой код. FOR nCount = 1 TO 5 col_nom = 1 h_name=thisform.Grid1.column(col_nom).header1.caption col_nom=col_nom+1 ENDFOR Проблема в том что я не могу в colomn вставить переменную. Как мне быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 20:25:54 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Недоходящий...У меня есть три таблицы, в которых есть по одинаковому полю и каждая таблица выводится в свой грид. Мне нужно прописать програмно так чтоб кликнув по первому гриду по какой нить записи автоматом менялись записи в других гридах в соответствии со значением одинаковых полей. Это можно сделать через DATA Enveroutmen. Но в моем случае это нужно делать только програмно. Вам понятен мой вопрос? Конечно лучше использовать Local View с полной информацией из трех таблиц. Но раз так, значит так. Конечно другие предложат что-то свое. Но вот мое (плохо что ты не привел структуру своих таблиц, т.к. трудно объяснять на пальцах): В форме делаю свойство: THISFORM.My_sv - в дальнейшем будет значение поля. В методе THISFORM.Init: Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 07:39:23 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Недоходящий...Проблема в том что я не могу в colomn вставить переменную. Как мне быть? Непонял цели ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 07:44:43 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
НедоходящийУ меня еще один паралельный вопрос. Мне нужно в гриде с каждой его колонки считать название. Вот мой код. FOR nCount = 1 TO 5 col_nom = 1 h_name=thisform.Grid1.column(col_nom).header1.caption col_nom=col_nom+1 ENDFOR Проблема в том что я не могу в colomn вставить переменную. Как мне быть? h_name='' FOR nCount = 1 TO thisform.Grid1.ColumnCount h_name=h_name+', '+thisform.Grid1.columns(nCount).header1.caption ENDFOR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 09:09:20 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
to Роман Новичек Thank you! чуть изменил и получилось то что надо. to Владимир СА Вы уж простите меня если пишу не понятно. Не всегда получается выразить мысль так чтобы поняли все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 11:11:12 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Как можно быстро очистить таблицу от записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 11:19:55 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
НедоходящийКак можно быстро очистить таблицу от записей? 1. EXCLUSIVE режим 2. SET SAFETY OFF (это чтобы без лишних вопросов - побыстрее ;-)) 3. ZAP Вопрос - а может лучше SET DELETE ON и DELETE, а потом когда нужно PACK. А то вдруг чего восстанавить захочешь из удаленного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 11:30:56 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
И еще Не всякая таблица в БД, если в ней с умом проставлены триггеры даст тебе очистить себя А если триггеров нет, то ствоим релейшн бяка может получиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 11:34:39 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Да. то что нужно. А по поводу востановления не знал. Теперь знаю и учту этот способ. Скажите: как можно в выбраном поле подсчитать количество записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 11:38:59 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Еще вопросик. Использую команду Found для поиска одинаковых записей в одном поле, вот код obrabotka_vibora = ALLTRIM(vibor_feilds.name_header) STORE 0 TO gnChet LOCATE FOR ALLTRIM(vibor_feilds.name_header) = obrabotka_vibora DO WHILE FOUND( ) gnChet = gnChet + 1 CONTINUE ENDDO что мне нужно прописать чтобы номер строки найденого выражения записать в переменную для пометки на удаления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 11:59:10 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Последний вопрос снимаю.Недочитал хелп до конца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 12:13:45 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
to О_В_Д и всем кто знает Использую команду delete для курсора. пометил записи для удаления. Команда PACK не работает. Какая команда удалит записи в курсоре? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 12:54:09 |
|
||
|
о таблицах
|
|||
|---|---|---|---|
|
#18+
Недоходящийto О_В_Д и всем кто знает Использую команду delete для курсора. пометил записи для удаления. Команда PACK не работает. Какая команда удалит записи в курсоре? Че ты голову ломаешь? Курсор ридонли, вещь временная. Ну делить записи в свое удовольствие. Они тебе че - мешаеют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 13:04:44 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33322000&tid=1593263]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
314ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 671ms |

| 0 / 0 |
