
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.12.2007, 20:12
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Ну,друзья однополчане,поможайте! Нужен код на кнопку которая будет действовать как кнопка Add из созданных мастером(txtbtns из wizbtns),но чтобы она добавляла записи не только в родительскую,но и дочерние таблицы. Ситуация вот в чём состоит:одна форма на ней pageframe с 2-мя закладками.На первой textbox'ы из родительской таблицы,на второй из дочерней.Кинул на нах эти самые кнопки(Первая,последняя,печать,добавить),так вот,при нажатии на Add можно вводить только в textbox'ы родительской,а вот в дочерние почему-то нельзя. Как сделать так,чтобы можно было? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.12.2007, 15:26
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Используй Insert into для каждой таблицы. Значение ключевого поля задавай сам для каждой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2007, 15:18
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Ключевое поле у меня 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2007, 15:45
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
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 у текстбокса и буферизацию таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2007, 17:34
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Честно говоря из поста ничего не понял...у меня 2 таблицы,и в каждой есть поле марка,я добавляю новое название марки которого нету ни как в первой,так и во второй таблице...я вроде как всё указал(прочтите прошлый мой пост)... Где тут конкретный совет???Или может я торомоз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2007, 17:49
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
обнаружилась фишка! Действительно,там такая запись уже была... Вот как это получилось:я её добавил(для эксперимента),потом удалил с помощью кнопки,которую я сделал сам,потом закрыл лису,ушёл есть,пришёл,запустил лису,попытался добавить такую же,не получилось. Посмотрел сейчас таблицы в browse,оказалось ничего не удалилось.Почему?Вот код кнопки удаления: SET DELETED ON DELETE in dopoln DELETE IN osnown SKIP -1 IN osnown SKIP -1 IN dopoln thisform.Refresh() Я не спец,может чё напутал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2007, 18:16
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
причем если я работаю с одной таблицей всё отлично,а как начинаю добавлять во вторую,так начинается. Добавляю в первую запись qqq и во вторую qqq(она у меня типа 2 -ой становиться,т.к. одна у меня там уже есть),потом www добавляю.Смотрю в browse на таблицы...2 запись в первой qqq,вторая запись во второй www...хотя на форме все правильно перебирает... Вот аткой кошмар! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2007, 20:07
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
lihachобнаружилась фишка! Действительно,там такая запись уже была... Вот как это получилось:я её добавил(для эксперимента),потом удалил с помощью кнопки,которую я сделал сам,потом закрыл лису,ушёл есть,пришёл,запустил лису,попытался добавить такую же,не получилось... В фоксе помеченные на удаление записи тоже проверяются при добавлении/изменении первичного ключа. Т.к. в любой момент может появиться SET DELETED OFF. Поэтому удобней использовать счетчик в качестве ключа, тогда таких проблем не возникает. lihachпричем если я работаю с одной таблицей всё отлично,а как начинаю добавлять во вторую,так начинается. Добавляю в первую запись qqq и во вторую qqq(она у меня типа 2 -ой становиться,т.к. одна у меня там уже есть),потом www добавляю.Смотрю в browse на таблицы...2 запись в первой qqq,вторая запись во второй www...хотя на форме все правильно перебирает... Вот аткой кошмар! Ничего не понятно. Попробуй сначала очистить таблицы: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2007, 10:19
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
дело вот в чём:записи в таблицу 1 добавляются как надо(в просмотре browse),а в таблице 2 в обратном порядке... table1 www qqq sss table2 sss qqq www это если смотреть не выходя из фокса....а форма переберает их правильно,ну,наверное потому что она их определяет по индексам... а если выйти и опять посмотреть в browse ,то там всё приходит на свои места... table1 www qqq sss table2 www qqq sss кому интересно,вот весь архив,находящийся в разработке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 14:45
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Что-то други меня совсем оставили...Может архив не открывается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 15:10
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
lihachЧто-то други меня совсем оставили...Может архив не открывается? Открывается, только понятней от этого не становится. По большому счету не важно в какой последовательности идут записи, т.к. у тебя связка таблиц по SET RELATION и в подчиненной (dopoln) используется индекс (MARKA) Если идет перемещение по osnown, то в dopoln фокс сам устанавливает указатель на запись где dopoln.marka = osnown.marka, или в конец dopoln если такого значения dopoln.marka нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 15:18
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Вот и я говорю....может поэтому и кнопка удаления не работает??? Может он не понимает чего ему удалять? А так какой вердикт?Добавление-то я правильно сделал?Надо же у специалистов проконсультироваться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 15:29
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
lihachВот и я говорю....может поэтому и кнопка удаления не работает??? Может он не понимает чего ему удалять? Удаление правильно, только замени Код: plaintext Код: plaintext и PACK убери. thisform.Refresh() не поможет, т.к. контролы у тебя показывают переданные им значения, а не содержимое записей таблиц. lihachА так какой вердикт?Добавление-то я правильно сделал?Надо же у специалистов проконсультироваться... Вердикт - порнография полная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 15:51
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Что ж так грубо то!Я сегодня первый день!Я пришёл тут так и было! Работает же....коряво конечно...а что не проффесионального...только конкретно(так в 2-х словах,если не трудно,общие тезисы). И как быть без pack опять же?Записи то после запуска следующего не появятся обратно?Да + когда я захочу такую же запись,как помечена на удаление добавить,он мне не выдаст про уникальность??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 15:59
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
Чой-то марки стали у тебя какие-то неприличные. Сюда же дети заходят.... Напрасно употребляешь команду pack в коде кнопки удаления. И сильно навороченный код в триггере таблицы osnown - он вообще тебе нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 16:08
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Простите за марки...мне так стыдно,просто ночью делал и так достало уже!!!!Что вот-результат... Прошлого не вернуть...а триггер не я делал,он сам появился.(только если ненароком получилось) Что такое триггер в теории только знаю и писать их пока не умею. И опять же про pack... Сделал удаление как советовали,пару записей удалил,остается в таблице 2 записи,одну удаляешь,а она на форме так и остается.....надо додумать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 16:10
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
lihachЧто ж так грубо то!Я сегодня первый день!Я пришёл тут так и было! Работает же....коряво конечно...а что не проффесионального...только конкретно(так в 2-х словах,если не трудно,общие тезисы). Все. Что оценивать, если у тебя пара десятков строк кода и те состоят в основном из смены Visible да Enabled? А ты не можешь разобраться с работой нескольких строк выполняющих работу с данными? Enabled Фокс сам из менять может без единой строки кода. Это еще как-то может сканать на три в вузе, где программирование не является профильным предметом. lihachИ как быть без pack опять же?Записи то после запуска следующего не появятся обратно?Да + когда я захочу такую же запись,как помечена на удаление добавить,он мне не выдаст про уникальность??? Не хочу объяснять где что прописывать и инструкцию прикладывать к каждой строке кода. Для этого книги есть. Похожие вещи там разжевываются по самые нехочу. Возьми и почитай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 16:11
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
и что я говорил!!!вышел из fox'а,опять зашел,а саписи тут как тут(помеченные на удаление). Кстати на одной из тем форума,что то такое обсуждалось...но даже если сделать так,что записи помеченные на удаление просматриваться не будут(я,кстати,не знаю как,видимо, не дорос ещё),то это же не приемлимо!Размер файла будет расти до бесконечности....да ещё добавление таких же....ну в общем....надо рациональное решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 16:18
|
|||
|---|---|---|---|
|
|||
Добавление записей в дочерние таблицы |
|||
|
#18+
Что ж,спасибо за конструктивный ответ....пойду в книгах покопаюсь. А я то думал:зачем форум нужен?Чтоб там на библиотеку указали,вот зачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 16:23
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
lihachи что я говорил!!!вышел из fox'а,опять зашел,а саписи тут как тут(помеченные на удаление). Кстати на одной из тем форума,что то такое обсуждалось...но даже если сделать так,что записи помеченные на удаление просматриваться не будут(я,кстати,не знаю как,видимо, не дорос ещё),то это же не приемлимо!Размер файла будет расти до бесконечности....да ещё добавление таких же....ну в общем....надо рациональное решение Операции требующие монопольного захвата таблиц (PACK, INDEX) обычно выделяют в отдельный блок, который выполняется по мере необходимости (я делаю при первом запуске в день обычно), но ни как не после каждой операции DELETE PS Иди за книжкой там все это описано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.12.2007, 16:24
|
|||
|---|---|---|---|
Добавление записей в дочерние таблицы |
|||
|
#18+
lihachЧто ж,спасибо за конструктивный ответ....пойду в книгах покопаюсь. А я то думал:зачем форум нужен?Чтоб там на библиотеку указали,вот зачем. Форум нужен чтобы проблемы решать которые в книжках не описаны, а не для он-лайн лекций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&mobile=1&tid=1588346]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 361ms |

| 0 / 0 |
