powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавление записей в дочерние таблицы
22 сообщений из 22, страница 1 из 1
Добавление записей в дочерние таблицы
    #35015945
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну,друзья однополчане,поможайте!
Нужен код на кнопку которая будет действовать как кнопка Add из созданных мастером(txtbtns из wizbtns),но чтобы она добавляла записи не только в родительскую,но и дочерние таблицы.
Ситуация вот в чём состоит:одна форма на ней pageframe с 2-мя закладками.На первой textbox'ы из родительской таблицы,на второй из дочерней.Кинул на нах эти самые кнопки(Первая,последняя,печать,добавить),так вот,при нажатии на Add можно вводить только в textbox'ы родительской,а вот в дочерние почему-то нельзя.
Как сделать так,чтобы можно было?
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35017914
student_lviv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй Insert into для каждой таблицы. Значение ключевого поля задавай сам для каждой таблицы.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35028457
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ключевое поле у меня marka(как в table1 оно там primary,так и в Table2 regular).Так вот,при записи в textbox'ы одинаковых значений в этого поля появляется ошибка,как я смотрю в этом форуме многим знакомая(uniqueness of index marka is violated),но путёвого ответа ДЛЯ СЕБЯ я не отыскал.

так открываю box'ы для добавления:
thisform.pageframe1.page1.vvSteelsname.Visible= .T.
thisform.pageframe1.page1.vvSteeltip.Visible= .T.
thisform.pageframe1.page1.vvPrimen.Visible= .T.
thisform.pageframe1.page2.vvDopolnname.Visible= .T.
thisform.vvod.Visible= .T.
thisform.ochist.Visible= .F.

вот так записи добавляю:
Insert Into osnown(marka,tip,nasnachenie) Values(thisform.pageframe1.page1.vvSteelsname.Value,thisform.pageframe1.page1.vvSteeltip.Value,thisform.pageframe1.page1.vvPrimen.Value)
INSERT INTO dopoln(marka) values(thisform.pageframe1.page2.vvDopolnname.Value)
thisform.pageframe1.page1.vvSteelsname.Value=""
thisform.pageframe1.page1.vvSteelsname .Visible= .F.
thisform.pageframe1.page1.vvSteeltip.Value=""
thisform.pageframe1.page1.vvSteeltip.Visible= .F.
thisform.pageframe1.page1.vvPrimen.Value=""
thisform.pageframe1.page1.vvPrimen.Visible= .F.
thisform.pageframe1.page2.vvDopolnname.Value=""
thisform.pageframe1.page2.vvDopolnname.Visible= .F.
thisform.vvod.Visible= .F.
thisform.ochist.Visible= .T.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35028472
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lihach... ошибка,как я смотрю в этом форуме многим знакомая(uniqueness of index marka is violated),но путёвого ответа ДЛЯ СЕБЯ я не отыскал.

А F1 пробовал нажимать:
HELPThe uniqueness of primary or candidate key is violated.
Fix the record values or revert them.

У тебя в таблице есть индекс созданный как PRIMARY KEY, который не допускает двух одинаковых значений в индексном выражении. А ты пытаешься добавить уже существующее. Вероятно в insert`е ты это поле не указал, поэтому в первый раз вставился 0, во второй раз 0 поставить нельзя т.к. он уже есть.
Если VFP7 и выше то для поля ключа поставь тип Integer (Autoinc)
если VFP6 и ниже то пиши туда RECNO() для курсового достаточно. В рабочих прогах лучше RECNO() не использовать в качестве ключа

PS Рекомендую еще почитать про свойство ControlSource у текстбокса и буферизацию таблиц.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35028534
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно говоря из поста ничего не понял...у меня 2 таблицы,и в каждой есть поле марка,я добавляю новое название марки которого нету ни как в первой,так и во второй таблице...я вроде как всё указал(прочтите прошлый мой пост)...
Где тут конкретный совет???Или может я торомоз?
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35028547
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обнаружилась фишка!
Действительно,там такая запись уже была...
Вот как это получилось:я её добавил(для эксперимента),потом удалил с помощью кнопки,которую я сделал сам,потом закрыл лису,ушёл есть,пришёл,запустил лису,попытался добавить такую же,не получилось.
Посмотрел сейчас таблицы в browse,оказалось ничего не удалилось.Почему?Вот код кнопки удаления:
SET DELETED ON
DELETE in dopoln
DELETE IN osnown
SKIP -1 IN osnown
SKIP -1 IN dopoln
thisform.Refresh()
Я не спец,может чё напутал...
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35028565
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
причем если я работаю с одной таблицей всё отлично,а как начинаю добавлять во вторую,так начинается.
Добавляю в первую запись qqq и во вторую qqq(она у меня типа 2 -ой становиться,т.к. одна у меня там уже есть),потом www добавляю.Смотрю в browse на таблицы...2 запись в первой qqq,вторая запись во второй www...хотя на форме все правильно перебирает...
Вот аткой кошмар!
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35028661
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lihachобнаружилась фишка!
Действительно,там такая запись уже была...
Вот как это получилось:я её добавил(для эксперимента),потом удалил с помощью кнопки,которую я сделал сам,потом закрыл лису,ушёл есть,пришёл,запустил лису,попытался добавить такую же,не получилось... В фоксе помеченные на удаление записи тоже проверяются при добавлении/изменении первичного ключа. Т.к. в любой момент может появиться SET DELETED OFF. Поэтому удобней использовать счетчик в качестве ключа, тогда таких проблем не возникает.

lihachпричем если я работаю с одной таблицей всё отлично,а как начинаю добавлять во вторую,так начинается.
Добавляю в первую запись qqq и во вторую qqq(она у меня типа 2 -ой становиться,т.к. одна у меня там уже есть),потом www добавляю.Смотрю в browse на таблицы...2 запись в первой qqq,вторая запись во второй www...хотя на форме все правильно перебирает...
Вот аткой кошмар!
Ничего не понятно. Попробуй сначала очистить таблицы:
Код: plaintext
1.
2.
3.
4.
5.
close data all
use osnown excl
zap
use dopoln excl
zap
use
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35029254
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело вот в чём:записи в таблицу 1 добавляются как надо(в просмотре browse),а в таблице 2 в обратном порядке...
table1
www
qqq
sss

table2
sss
qqq
www

это если смотреть не выходя из фокса....а форма переберает их правильно,ну,наверное потому что она их определяет по индексам...
а если выйти и опять посмотреть в browse ,то там всё приходит на свои места...

table1
www
qqq
sss

table2
www
qqq
sss
кому интересно,вот весь архив,находящийся в разработке...
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35032659
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то други меня совсем оставили...Может архив не открывается?
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35032783
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lihachЧто-то други меня совсем оставили...Может архив не открывается?
Открывается, только понятней от этого не становится.
По большому счету не важно в какой последовательности идут записи, т.к. у тебя связка таблиц по SET RELATION и в подчиненной (dopoln) используется индекс (MARKA)
Если идет перемещение по osnown, то в dopoln фокс сам устанавливает указатель на запись где dopoln.marka = osnown.marka, или в конец dopoln если такого значения dopoln.marka нет
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35032839
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот и я говорю....может поэтому и кнопка удаления не работает???
Может он не понимает чего ему удалять?
А так какой вердикт?Добавление-то я правильно сделал?Надо же у специалистов проконсультироваться...
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35032893
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lihachВот и я говорю....может поэтому и кнопка удаления не работает???
Может он не понимает чего ему удалять?
Удаление правильно, только замени
Код: plaintext
thisform.Refresh() 
на
Код: plaintext
ThisForm.nextsteel.Click()
т.к. после удаления указатель остается на удаленной записи даже при SET DELETED ON
и PACK убери.
thisform.Refresh() не поможет, т.к. контролы у тебя показывают переданные им значения, а не содержимое записей таблиц.
lihachА так какой вердикт?Добавление-то я правильно сделал?Надо же у специалистов проконсультироваться... Вердикт - порнография полная.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35032986
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что ж так грубо то!Я сегодня первый день!Я пришёл тут так и было!
Работает же....коряво конечно...а что не проффесионального...только конкретно(так в 2-х словах,если не трудно,общие тезисы).
И как быть без pack опять же?Записи то после запуска следующего не появятся обратно?Да + когда я захочу такую же запись,как помечена на удаление добавить,он мне не выдаст про уникальность???
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033017
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чой-то марки стали у тебя какие-то неприличные. Сюда же дети заходят....

Напрасно употребляешь команду pack в коде кнопки удаления. И сильно навороченный код в триггере таблицы osnown - он вообще тебе нужен?
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033059
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите за марки...мне так стыдно,просто ночью делал и так достало уже!!!!Что вот-результат...
Прошлого не вернуть...а триггер не я делал,он сам появился.(только если ненароком получилось)
Что такое триггер в теории только знаю и писать их пока не умею.
И опять же про pack...
Сделал удаление как советовали,пару записей удалил,остается в таблице 2 записи,одну удаляешь,а она на форме так и остается.....надо додумать....
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033073
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lihachЧто ж так грубо то!Я сегодня первый день!Я пришёл тут так и было!
Работает же....коряво конечно...а что не проффесионального...только конкретно(так в 2-х словах,если не трудно,общие тезисы). Все.
Что оценивать, если у тебя пара десятков строк кода и те состоят в основном из смены Visible да Enabled? А ты не можешь разобраться с работой нескольких строк выполняющих работу с данными?
Enabled Фокс сам из менять может без единой строки кода.
Это еще как-то может сканать на три в вузе, где программирование не является профильным предметом.
lihachИ как быть без pack опять же?Записи то после запуска следующего не появятся обратно?Да + когда я захочу такую же запись,как помечена на удаление добавить,он мне не выдаст про уникальность??? Не хочу объяснять где что прописывать и инструкцию прикладывать к каждой строке кода. Для этого книги есть. Похожие вещи там разжевываются по самые нехочу. Возьми и почитай.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033080
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и что я говорил!!!вышел из fox'а,опять зашел,а саписи тут как тут(помеченные на удаление).
Кстати на одной из тем форума,что то такое обсуждалось...но даже если сделать так,что записи помеченные на удаление просматриваться не будут(я,кстати,не знаю как,видимо, не дорос ещё),то это же не приемлимо!Размер файла будет расти до бесконечности....да ещё добавление таких же....ну в общем....надо рациональное решение
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033106
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что ж,спасибо за конструктивный ответ....пойду в книгах покопаюсь.
А я то думал:зачем форум нужен?Чтоб там на библиотеку указали,вот зачем.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033137
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lihachи что я говорил!!!вышел из fox'а,опять зашел,а саписи тут как тут(помеченные на удаление).
Кстати на одной из тем форума,что то такое обсуждалось...но даже если сделать так,что записи помеченные на удаление просматриваться не будут(я,кстати,не знаю как,видимо, не дорос ещё),то это же не приемлимо!Размер файла будет расти до бесконечности....да ещё добавление таких же....ну в общем....надо рациональное решение Операции требующие монопольного захвата таблиц (PACK, INDEX) обычно выделяют в отдельный блок, который выполняется по мере необходимости (я делаю при первом запуске в день обычно), но ни как не после каждой операции DELETE

PS Иди за книжкой там все это описано.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033146
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lihachЧто ж,спасибо за конструктивный ответ....пойду в книгах покопаюсь.
А я то думал:зачем форум нужен?Чтоб там на библиотеку указали,вот зачем. Форум нужен чтобы проблемы решать которые в книжках не описаны, а не для он-лайн лекций.
...
Рейтинг: 0 / 0
Добавление записей в дочерние таблицы
    #35033159
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я уж догнал что при запуске делать надо этот pack......
Удаляюсь,всем спасибо,удачи,любви и терпенья.....
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавление записей в дочерние таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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