powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / о таблицах
25 сообщений из 32, страница 1 из 2
о таблицах
    #33320213
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ли возможность узнать сколько открыто таблиц и их имена?
...
Рейтинг: 0 / 0
о таблицах
    #33320273
Шел мимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aused()
...
Рейтинг: 0 / 0
о таблицах
    #33320303
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сенкс
...
Рейтинг: 0 / 0
о таблицах
    #33320348
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросик. А можно ли програмно создовать связь между таблицами? т.е. если значения по одной из колонок в каждой таблице совпадают, то показывается вся остальная строка.
...
Рейтинг: 0 / 0
о таблицах
    #33320528
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийЕще вопросик. А можно ли програмно создовать связь между таблицами? т.е. если значения по одной из колонок в каждой таблице совпадают, то показывается вся остальная строка.
Из Help-а для VFP30:
Код: plaintext
SET RELATION TO [eExpression1 INTO nWorkArea1 | cTableAlias1 [, eExpression2 INTO nWorkArea2 | cTableAlias2 ...][IN nWorkArea | cTableAlias][ADDITIVE]]
Устанавливает отношение между двумя открытыми таблицами.

Параметры

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 можно использовать для удаления отдельных отношений типа родитель/потомок.
...
Рейтинг: 0 / 0
о таблицах
    #33320551
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Связи между таблицами , должны находиться у тебя в голове и быть выражены в тригерах по ключевым полям , индексам и прочей куйне, а
SET RELATION TO , предполагает просто эффективный и простой как молоток механизм анализа этого добра.
...
Рейтинг: 0 / 0
о таблицах
    #33321022
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
luserСвязи между таблицами , должны находиться у тебя в голове и быть выражены в тригерах по ключевым полям , индексам и прочей куйне, а
SET RELATION TO , предполагает просто эффективный и простой как молоток механизм анализа этого добра.
Чисто согласен. Сначала надо продумать и оформить как следует БД.
...
Рейтинг: 0 / 0
о таблицах
    #33321088
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже согласен! Но проблема вся в том что в моем задании нужно зделать так, чтоб любой юзер мог подключать разные таблицы и если в каких-то таблицах поля полностью одинаковые, то создается между ними связь. теперь у меня вопрос как проверять таблицы на схожесть полей?
...
Рейтинг: 0 / 0
о таблицах
    #33321178
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недоходящий...Но проблема вся в том что в моем задании нужно сделать так, чтоб любой юзер мог подключать разные таблицы и если в каких-то таблицах поля полностью одинаковые, то создается между ними связь...
Может поподробнее об задании . Фраза: "чтоб любой юзер мог подключать разные таблицы..." для меня непонятна. Вообще-то юзеру показывают информацию из таблиц посредством например Local View или напрямую таблицами.
Почему я и сказал: "Сначала надо продумать и оформить как следует БД".
Существуют понятия: реляционность, нормализация таблиц. Наверное у Вас это все уже сделано и оформлена БД. Тогда расскажите поподробнее. Или задайте конкретнее вопрос.
...
Рейтинг: 0 / 0
о таблицах
    #33321219
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Владимир СА

Хорошо. У меня есть три таблицы, в которых есть по одинаковому полю и каждая таблица выводится в свой грид. Мне нужно прописать програмно так чтоб кликнув по первому гриду по какой нить записи автоматом менялись записи в других гридах в соответствии со значением одинаковых полей. Это можно сделать через DATA Enveroutmen. Но в моем случае это нужно делать только програмно. Вам понятен мой вопрос?
...
Рейтинг: 0 / 0
о таблицах
    #33321224
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня еще один паралельный вопрос. Мне нужно в гриде с каждой его колонки считать название. Вот мой код.

FOR nCount = 1 TO 5
col_nom = 1
h_name=thisform.Grid1.column(col_nom).header1.caption
col_nom=col_nom+1
ENDFOR

Проблема в том что я не могу в colomn вставить переменную. Как мне быть?
...
Рейтинг: 0 / 0
о таблицах
    #33321472
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недоходящий...У меня есть три таблицы, в которых есть по одинаковому полю и каждая таблица выводится в свой грид. Мне нужно прописать програмно так чтоб кликнув по первому гриду по какой нить записи автоматом менялись записи в других гридах в соответствии со значением одинаковых полей. Это можно сделать через DATA Enveroutmen. Но в моем случае это нужно делать только програмно. Вам понятен мой вопрос?
Конечно лучше использовать Local View с полной информацией из трех таблиц.
Но раз так, значит так.
Конечно другие предложат что-то свое. Но вот мое (плохо что ты не привел структуру своих таблиц, т.к. трудно объяснять на пальцах):
В форме делаю свойство:
THISFORM.My_sv - в дальнейшем будет значение поля.
В методе THISFORM.Init:
Код: plaintext
1.
SET ORDER TO <Pole> IN <Tabl2>
SET ORDER TO <Pole> IN <Tabl3>
В методе первого Grid-а Grid1.AfterRowColChange:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
LPARAMETERS nColIndex
IF THISFORM.My_sv <> <Tabl1>.<Pole>
  THISFORM.My_sv = <Tabl1>.<Pole>
  SEEK THISFORM.My_sv IN <Tabl2>
  SEEK THISFORM.My_sv IN <Tabl3>
  THISFORM.Grid2.Refresh()
  THISFORM.Grid3.Refresh()
ENDIF
Примерно так.
...
Рейтинг: 0 / 0
о таблицах
    #33321474
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недоходящий...Проблема в том что я не могу в colomn вставить переменную. Как мне быть?
Непонял цели ???
...
Рейтинг: 0 / 0
о таблицах
    #33321543
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийУ меня еще один паралельный вопрос. Мне нужно в гриде с каждой его колонки считать название. Вот мой код.

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
...
Рейтинг: 0 / 0
о таблицах
    #33321936
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Роман Новичек
Thank you! чуть изменил и получилось то что надо.

to Владимир СА
Вы уж простите меня если пишу не понятно. Не всегда получается выразить мысль так чтобы поняли все.
...
Рейтинг: 0 / 0
о таблицах
    #33321970
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно быстро очистить таблицу от записей?
...
Рейтинг: 0 / 0
о таблицах
    #33322000
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
совсем???
ZAP
...
Рейтинг: 0 / 0
о таблицах
    #33322018
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийКак можно быстро очистить таблицу от записей?
1. EXCLUSIVE режим
2. SET SAFETY OFF (это чтобы без лишних вопросов - побыстрее ;-))
3. ZAP

Вопрос - а может лучше SET DELETE ON и DELETE, а потом когда нужно PACK. А то вдруг чего восстанавить захочешь из удаленного
...
Рейтинг: 0 / 0
о таблицах
    #33322036
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще
Не всякая таблица в БД, если в ней с умом проставлены триггеры даст тебе очистить себя
А если триггеров нет, то ствоим релейшн бяка может получиться
...
Рейтинг: 0 / 0
о таблицах
    #33322049
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. то что нужно. А по поводу востановления не знал. Теперь знаю и учту этот способ.
Скажите: как можно в выбраном поле подсчитать количество записей?
...
Рейтинг: 0 / 0
о таблицах
    #33322123
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросик. Использую команду 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

что мне нужно прописать чтобы номер строки найденого выражения записать в переменную для пометки на удаления?
...
Рейтинг: 0 / 0
о таблицах
    #33322181
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний вопрос снимаю.Недочитал хелп до конца.
...
Рейтинг: 0 / 0
о таблицах
    #33322341
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to О_В_Д и всем кто знает
Использую команду delete для курсора. пометил записи для удаления. Команда PACK не работает. Какая команда удалит записи в курсоре?
...
Рейтинг: 0 / 0
о таблицах
    #33322388
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недоходящийto О_В_Д и всем кто знает
Использую команду delete для курсора. пометил записи для удаления. Команда PACK не работает. Какая команда удалит записи в курсоре?
Че ты голову ломаешь? Курсор ридонли, вещь временная. Ну делить записи в свое удовольствие. Они тебе че - мешаеют?
...
Рейтинг: 0 / 0
о таблицах
    #33322444
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to О_В_Д
В курсоре появляются одинаковые строки, которые нужно убрать. И они у меня меня помечаются на удаление, так же я знаю номера строк где они находятся.

Если курсор ридонли, то что никак не удалишь?
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / о таблицах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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