|
|
|
| например. есть таблица ФИО и другие АДРЕСС, СЕМЬЯ, ПАСПОРТ и СТАЖ.
вопрос? при удалении\создании 1-ой записи ФИО как удалить\создать 1-вые записи в других таблицах?
зы. при условии на одной форме поместить данные всех таблиц нельзя. | |
|
| |
|
|
|
| Используйте несколько форм или вкладки. Создавать всё-равно придётся вручную. А вот каскадное удаление можно оргнанизовать, создав соответствующую связь между таблицами на схеме данных. | |
|
| |
|
|
|
| Связанные таблицы 1:много и связанные подчиненные формы на вкладках по соответствующим полям. | |
|
| |
|
|
|
| спасибо, каскадное удаление работает прекрасно)
а есть ли каскадное создание записей (одна заполняется, а параллельно в других таблицах создаются пустые записи)? | |
|
| |
|
|
|
| а смысл лишние записи плодить? к тому же пустые | |
|
| |
|
|
|
| заполнить 10 ФИО и не отвликаться на то что система ругается, а потом как будут данные заполнить адресса. | |
|
| |
|
|
|
| Система не должна ругаться. Надо так организовать схему данных и работу с формами, чтобы можно было легко добавить сколько угодно ФИО. А всё остальное добавлять по необходимости и (или) по возможности.
Т.е. таблица с ФИО - это должна быть так называемая справочная таблица для всех остальных. Чтобы была возможность спокойно добавлять данные в другие таблицы, связанные со справочной, сначала нужно, чтобы в справочной таблице уже были нужные данные. А именно это Вы и хотите сделать: сначала заполнить данными таблицу ФИО. | |
|
| |
|
|
|
| Все эти таблицы это упрощенный пример реальности. (вопрос в конце)
В реальности ФИО (имена другие в реальности) и другие табл. должны опираться на, порядка 50 справочников + свои поля в каждой табл.
Поэтому в итоге каждая табл. состоит из примерно 30 полей. Сначала все эти таблицы были частью одной, огромной табл. но все это было так громоздко и пришлось разделить на 5 больших табл.
И теперь столкнулся с необходимостью такой связи, какая была бы, если бы все это было частью одной табл. Так как любая запись первой или третий или другой табл. продолжение остальных табл.
Каскадное удаление решает половину задачи, и я хочу, чтоб юзер, не зависимо с какой табл. он начинает заполнение, в других добавлялась запись.
Выход я вижу в VBA . Завязать на стандартную кнопку "добавление записи" возможность добавлять новую запись в связанные табл.
А так как следующая запись не создастся пока не заполниться хотя бы одно поле, не заполняемой нами в данный момент табл., заполнить это поле, к примеру, табельным номером сотрудника, который ведет заполнение.
проблема в том, что я не знаю как средствами VBA создать новую запись и присвоить значение одному из его полей. | |
|
| |
|
|
|
| создать то не проблема
dim rs as recordset
set rs=currentdb.openrecordset("здесь имя таблицы")
rs.addnew
rs![здесь поле]="здесь значение"
rs.update
rs.close
приблизительно так чере DAO | |
|
| |
|
|
|
| спасибо)) все отлично создает
а как удалить текущую запись в текущей таблице и аналогичную запись в не текущей таблице? 1-вая и 2-ая таблица связанны по ключу.
ps. если удалить в 1-вой то каскадным удалением, удалит и во 2-ой, а вот если удалить во 2-ой то в первой ничего не удалиться, поэтому, кто знает код поделитесь) | |
|
| |
|
|
|
| Ну и дела. Может запрос на удаление поможет.
Но если надо удалить все, то зачем оставлять в основной таблице инфу? С нее и удалять. | |
|
| |
|
|
|
| Есть 5 табл.
есть 5 форм для каждой из 5-ти табл.
Цель - удалить n-ую запись в 5-ти табл. находясь в любой из форм.
=============================================================
возможно, поможет и запрос, привязанный к кнопкам на пяти формах, тогда подскажите оператор для создания подобного запроса. | |
|
| |
|
|
|
| нашел описание создания запроса http://www.taurion.ru/access/8/7. щас буду пробывать | |
|
| |
|
|
|
| удаляет на ура , но как запрос привязать к нажатию кнопки?? буду ломать голову | |
|
| |
|
|
|
| вытащил код из запроса, но VBA на него ругается когда я привязываю его к событию нажатия кнопки
DELETE фио.[1], фио.del
FROM фио
WHERE (((фио.del)="del")); | |
|
| |
|
|
|
| надо подумать в организации введения, хранения, редактирования данных. Какая необходимость раскидывать данные на несколько табл | |
|
| |
|
|
|
| а будет работать когда в таблице 150 полей (возможно будет больше)? | |
|
| |
|
|
|
| Создай в конструкторе запрос на выборку из 5 таблиц. Убедись, что он работает как надо, запускаясь с кнопки (создашь через мастера). Далее, если все устраивает, задай его тип (на удаление) и все. (в конструкторе там где запрос на выборку, обновление, удаление)
По крайней мере я так делал всегда и всегда работало.
Хотя на пять таблиц запрос создавать смысла нет, если он будет удалять с основной таблицы, связанной 1:много, то автоматом удалятся все записи со всех сторон. | |
|
| |
|
|
|
| я так и задал) на одну таблицу. щас попробую вставить код на выборку в кнопку | |
|
| |
|
|
|
| ----------------------------------------------------------
Все вышло, через мастера
----------------------------------------------------------
SELECT фио.[1], фио.del
FROM фио;
----------------------------------------------------------
DELETE фио.[1], фио.del
FROM фио
WHERE (((фио.del)="del")); | |
|
| |
|
|
|
| 150 полей, даже не представляю что бы это могло быть?! Дай глянуть. | |
|
| |
|
|
|
| отдел кадров. Готовлю работу в колледж
показывать стыдно все еще сырое.
позже выставлю готовую работу. | |
|
| |
|
|
|
| Уж лучше сейчас ....подскажут....
чем потом .... | |
|
| |
|
|
|
|
| Кому личка? У меня нет. Высылки лучше на мыло. По кадрам могу предложить кое-что из своего старого. (до совершенства далеко, но делает многое.) | |
|
| |
|
|
|
|
| Впечатляет, только настраивать ее будет очень сложно. Остальное шлю на мыло. | |
|
| |
|
|
|
| меня все интересует)) если есть возьму, приходиться осваивать двухгодовой курс Акцесса за пару недель. | |
|
| |
|
|
|
| Времени море!!!! Торопиться не надо. | |
|
| |
|
|
|
| когда "учишься" не замечаешь как летит время )) | |
|
| |
|
|
|
| не торопи время, оно само тебя поторопит. | |
|
| |
|
|
|
| По моему мнению в Вашей базе не хватает одной таблицы....
которая объединяла бы все Ваши основные таблицы.....
та схема базы которую Вы собрали мне кажется неработоспособной....
Варианты
1. Из таблицы Общие удалить Фамилия Имя Отчество Датарождения и собрать это все в отдельной таблице. Во все основные таблицы ввести новое поле - длинное целое (но не ключевое). Убрать все связи которые объединяют основные таблицы. Собрать новые связи Ключевое поле новой таблицы сцепить с полями в основных таблицах которые только что создали. После чего на основе этой новой таблицы сделать форму на форме разместить вкладки а на вкладках подчиненные формы созданные на основе основных таблиц.
Теперь Юзеру будет достаточно ввести Фамилию имя отчество и дату рождения сотрудника...
остальную инфу можно забивать по мере поступления
2. Более сложный вариант создать таблицу в ней собственный ID и числовые не повторяющиеся поля на каждую основную таблицу, значения полей установить по умолчанию 0
установить связь между ИД каждой основной таблицы и соответствующим ей полем в новой таблице.....
Теперь основные таблицы связаны между собой через эту промежуточную таблицу. Однако система заполнения этой новой таблицы предполагает ее что все это будет организовано ручками.
Более того так же ручками придется делать систему передвижения по записям.
Однако как мне кажется при таком раскладе будет выполнено ваше желание начинать заполнение таблиц с любого места удалять сведения о лице как из одной таблицы так и из всех сразу | |
|
| |
|
|
|
| спасибо за совет, сейчас буду примерять варианты на практике. | |
|
| |
|
9 Кб. |
|
| Можно попробывать связь один к одному как на картинке | |
|
| |
|
|
|
| snipe, я соглашусь полностью с Вами по первому варианту. Т.к. в предложенной схеме данных я не увидел основного: таблицы, в которой должны быть кадры, как основной объект базы данных кадрового учёта!
Второй вариант, по-моему, на грани "шаманства". При работе с базой данных надо будет обновлять значения этих числовых полей, создавать новую запись в этой таблице при добавлении нового кадра и др. Т.е. производить много лишних движений. Куда как проще основная и подчинённые формы! | |
|
| |
|
|
|
| Ну вот снип и DenisV сказали то же самое, что и я на мыле. Послушай совета. В работе будет очень сложна, если вобще будет возможно запустить. | |
|
| |