|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Вобщем походил по форуму и в итоге всё равно не разобрался((( (т.к. нуб пока ещё наиполнейший) Короч есть база состоящая из 5 таблиц. Есть форма, на которой расположены несколько комбобоксов (источники - это поля четырёх таблиц), пару текстбоксов. Есть кнопка "добавить" Так вот, заполняем текстбоксы, выбираем значения в комбобоксах. А вот какой код прописать в кнопке добавить я не знаю. причём значения из комбобоксов и текст боксов должны записываться в определённые поля пятой таблицы.(как это зделать тоже непонимаю) Вот собсно всё. Прошу помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2009, 19:48 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Код для кнопки добавить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2009, 21:57 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2009, 21:58 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Dag, спс, вроде всё норм. Но вот щас при нажатии "добавить" выдаёт ошибку: "Нарушена уникальность индекса 'мой индекс' ". Это я так понимаю уже из другой серии. В RI везде стоит Ignore. Зы: я пробывал ещё к кнопке добавить применить вот это: INSERT INTO brigada (nomer_brigadi,burovik,pomosnik,burovay,nachalnik) VALUES (Thisform.text1.value,Thisform.text2.value,Thisform.text3.value,Thisform.Combo2.value,Thisform.Combo1.value) Вроде тож всё нормально, но вот выдаёт ошибку об несовпадении типа данных. эт я понял, что в текстбоксе инфа в текстовом формате, а у меня одно поле интежер. Как из Thisform.text1.value сделать чтобы переводилось в числа? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2009, 22:52 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
>>Вроде тож всё нормально, но вот выдаёт ошибку об несовпадении типа данных. эт я понял, что в текстбоксе инфа в текстовом формате, а у меня одно поле интежер. Как из Thisform.text1.value сделать чтобы переводилось в числа? Какое соответствие между текстовым значением и числовым? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 09:55 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
JaydenDag, спс, вроде всё норм. Но вот щас при нажатии "добавить" выдаёт ошибку: "Нарушена уникальность индекса 'мой индекс' ". Это я так понимаю уже из другой серии. В RI везде стоит Ignore. Какой тип индекса? Primary или Candidate требуют чтобы индексное выражение было уникальным. ПРи этом следует учитывать и удаленые записи. JaydenВроде тож всё нормально, но вот выдаёт ошибку об несовпадении типа данных. эт я понял, что в текстбоксе инфа в текстовом формате, а у меня одно поле интежер. Как из Thisform.text1.value сделать чтобы переводилось в числа? lnField=Val(Thisform.text1.value) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 11:45 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Всем большое спасибо, всё работает)) Но вопросы один за другим прут((( Щас вот немогу додуматься как зделать, чтобы при запуске формы, текстбох принимал значение равное: число из последней записи поля1 таблицы1 + 1. Т.е. например в поле1 последняя запись 9, то как зделать, чтобы при запуске формы, текстбокс считал эту цифру и прибавил еденицу, т.е. принял значение 10? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 15:03 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
nid=max(id) nid=m.nid+1 thisform.text1.value=nid ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 15:25 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Это все неправильно :) 1. Для того, чтобы данные из текстбоксов и комбо были привязаны к полям таблиц(ы), используется свойство ControlSource. Тогда изменения в текстбоксе и комбо будут сразу сохраняться в полях, без Replace. 2. Чтобы изменения сохранялись не сразу, а пользователь мог их отменить, используется буферизация и функции TableUpdate() и TableRevert() 3. Для поддержания уникальности кода и наращивания значения ключевого поля для новой записи используется свойство поля DefaultValue и функция NewID( ) . Пример такой функции - http://forum.foxclub.ru/read.php?29,333336,333356#msg-333356 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 16:21 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
karly™, я понимаю, что всё делаю по принцыпу "лишьбы-лишьбы"...но к сожалению катастрофически нехватает времени. Курсач скоро здавать. Вот после, не торопяс начну конкретно заседать. ЗЫ: И ещё вопрос: как сюда воткнуть проверку на заполнение полей? (т.е. если хотя бы один текстбокс или комбобокс пустой, выдать ошибку и запретить добавление, пока не будет всё заполнено) ? Вот код: appe blan in brigada replace nachalnik with (ThisForm.combo1.Value) replace burovay with val(ThisForm.combo2.Value) replace nomer_brigadi with val(ThisForm.text1.Value) replace burovik with (ThisForm.text2.Value) replace pomosnik with (ThisForm.text3.Value) MESSAGEBOX("Бригада добавлена") ThisForm.text1.Value='' ThisForm.text2.Value='' ThisForm.text3.Value='' ThisForm.combo1.Value='' ThisForm.combo2.Value='' ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 16:59 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Так и не смог понять, как запихать несколько условий в IF Вот код кнопки, что нужно изменить? (Все текстбоксы должны быть обязательно заполнены) IF ThisForm.text1.Value=' ' AND ThisForm.text2.Value=' ' AND ThisForm.text3.Value=' ' THEN MESSAGEBOX("Заполните поля") ELSE ... ... ... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2009, 16:45 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Jaydenkarly™, я понимаю, что всё делаю по принцыпу "лишьбы-лишьбы"...но к сожалению катастрофически нехватает времени. Курсач скоро здавать. Вот после, не торопяс начну конкретно заседать. Ну, да, конечно. А с понедельника, начну делать зарядку по утрам и 10км пробежки. Jayden ЗЫ: И ещё вопрос: как сюда воткнуть проверку на заполнение полей? (т.е. если хотя бы один текстбокс или комбобокс пустой, выдать ошибку и запретить добавление, пока не будет всё заполнено) ? Вот код кнопки, что нужно изменить? (Все текстбоксы должны быть обязательно заполнены) Код: plaintext 1. 2. 3.
Для строковых данных, при настройке SET EXACT OFF (это настройка по умолчанию), сравнение идет до истечения символов в правой части выражения. Поскольку пустая строка имеет 0 символов, то в таком синтаксисе она будет равна ЛЮБОЙ символьной строке. Если указывается один символ пробела, то он будет равен любой строке, начинающейся с пробела. Сравнение на пустоту, лучше выполнять при помощи специальной функции EMPTY() Код: plaintext 1. 2. 3.
Разумеется, есть и другие варианты, но через EMPTY() - самый простой, в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2009, 18:55 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
ВладимирМ , большое спасибо за помощь. ВладимирМ Ну, да, конечно. А с понедельника, начну делать зарядку по утрам и 10км пробежки. Нет, действительно буду разбираться, т.к. foxpro мне понадобится в будущем. Так что хочешь-нехочешь, а придётся :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2009, 19:00 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Вопрос по ошибке. Есть форма, на ней combobox (значения из таблицы берутся) В кнопке запрос (ну или как там) При нажатии на кнопку выскакивает ошибка "Объект не содержится в FORM". При нажатии в окне ошибки "продолжить" запрос выполняется корректно и выводит результат. Как избавиться от этой ошибки? Вот код кнопки: SELECT Raboti.skvagina, Raboti.brigada, Raboti.vid_raboti; FROM ; "база данных!raboti"; WHERE Raboti.skvagina = VAL(thisform.combo1.Value) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2009, 11:47 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Нежелательно в запросах Select-SQL использовать "многоступенчатые" ссылки. Лучше записать значение свойства в переменную и эту переменную использовать в запросе. Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2009, 14:03 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
ВладимирМ, Вы опять меня выручили! Спасибо большое. Ошибка перестала выскакивать. да и вообще осталось только две ошибки: одна связаная с меню (с ней попробую ещё поразбираюсь) а вторая, так даже не ошибка, а просто я не знаю как правильно сделать. Вобщем дело в следущем. В коде программы стоит _screen.Visible= .F. , чтобы при запуске *ехе скрывалось окно vfp. Но скрывается также результаты поиска на форме с запросами Select-SQL , (про это я спрашивал через сообщение выше) И вот не знаю как зделать, чтобы с одной стороны _screen.Visible было false, а с другой стороны результаты поиска были видны? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2009, 16:55 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
JaydenВобщем дело в следущем. В коде программы стоит _screen.Visible= .F. , чтобы при запуске *ехе скрывалось окно vfp. Но скрывается также результаты поиска на форме с запросами Select-SQL , (про это я спрашивал через сообщение выше) И вот не знаю как зделать, чтобы с одной стороны _screen.Visible было false, а с другой стороны результаты поиска были видны? Отобразить результат запроса в форме со свойством Form.ShowWindow = 2 - As Top-Level Form Хотя, непонятно, чем вас _SCREEN не устраивает? Все-равно ведь будете делать "самописную" замену _SCREEN. Почему же сразу его не использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2009, 17:42 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Подскажите плиз как в текущей использующийся таблице удалить записи которые повторяются (проверять уникальность по полю L_schet N 8) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2009, 10:13 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
ХочувсезнатьПодскажите плиз как в текущей использующийся таблице удалить записи которые повторяются (проверять уникальность по полю L_schet N 8) Нужен еще уникальный идентификатор записи, чтобы однозначно идентифицировать каждую запись. Предположим, что у вас это поле TabId, тогда Код: plaintext 1. 2. 3.
В результате, остануться только записи, при одинаковых значениях поля L_schet имеющие минимальное значение идентификатора записи TabId Если уникального идентификатора записи нет, то есть разные приемы, но, по сути, все они сводятся к сканированию таблицы. Пусть и через создание специфических индексов типа UNIQUE. Поищи по этому форуму. Обсуждалось не однократно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2009, 10:35 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
ВладимирМ, я только начинаю изучать фокс и многово не знаю поэтому попробую обьяснить как есть: По запросу программа открывает таблицу (каждый раз имя таблицы другое...структура одинакова)выполняется нужное действие после чего необходимо проверить записи на уникальность если такие записи в таблице уже встречаются то их надо удалять(только копии, одна должна остаться), а проверку необходимо выполнять по полю L_schet там забиты числовые значения типа 12345678. Если по запросу SELECT L_schet FROM table_name HAVING count(L_schet)>1 GROUP BY L_schet в курсоре можно удалять чтоб потом эти изменения перешли в таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2009, 11:29 |
|
Добавление/удаление. Не могу разобраться((
|
|||
---|---|---|---|
#18+
Т.е. вы модифицируете существующую таблицу и необходимо убедится, что модификация не привела к созданию дубля существующей записи? Это должно контролироваться на уровне базы данных. Т.е. самих исходных данных. Собственно, есть два способа. 1. Создать индекс типа CANDIDATE по контролируемому полю. Такой индекс по самой своей природе не допускает появление дублей. Однако следует иметь в виду, что он будет контролировать вообще ВСЕ записи, в том числе и помеченные как удаленные. А также пустые значения. Чтобы исключить из контроля те записи, уникальность в которых контролировать не надо в индексе Candidate добавляют FOR-условие. Подобный индекс просто не позволит создать или изменить запись таким образом, чтобы появился дубль. Будет сообщение об ошибке о нарушении уникальности. 2. Создать триггер, который будет выполнять те же проверки. Хотя, это возможно только если вы работаете с контейнером базы данных (файлом DBC). Со свободными таблицами - не получится. На этапе редактирования триггер будет "молчать". Но вот при попыьке сохранения реакция будет такой же, что и у индекса Candidate. Все остальные способы проверки - сомнительны. Дело в том, что в случае работы в сети нескольких пользователей есть риск получить конфликт совместного доступа. Т.е. изменения вносят два пользователя. - Первый выполнил проверку - нет дублей - Второй выполнил проверку - нет дублей - Первый сохранил изменения - Второй сохраняет изменения и получает дубль данных с теми, которые ввел первый пользователь В FoxPro for DOS это можно было обойти только наложив блокировки на таблицы. Т.е. достаточно групбый способ контроля. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2009, 14:19 |
|
|
start [/forum/moderation_log.php?user_name=ORei]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 1048ms |
total: | 1221ms |
0 / 0 |