|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
имеется таблица yeras.dbf в ней поля id_year1 и name_year1, допустим уже есть записи (2012, 2013, 2014) и при добавлении новой схожей записи, например 2013, он удалял удалял, либо не сохранял эту новую запись, прошу помогите с кодом и где лучше этот код записать???))) заранее благодарен))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 11:35 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymoreимеется таблица yeras.dbf в ней поля id_year1 и name_year1, допустим уже есть записи (2012, 2013, 2014) и при добавлении новой схожей записи, например 2013, он ОН - это кто?удалял удалял, либо не сохранял эту новую запись, прошу помогите с кодом и где лучше этот кодКакой ЭТОТ? записать???))) заранее благодарен)))Потрудитесь переформулировать вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 12:26 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Sergey Sizov, прости, что коряво написал)) он это код, или команда,))) с кодом помогите) сейчас картинки пришлю)) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 15:01 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymore, Вот форма с гридом где я добавляю запись ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 15:06 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymore, Здесь я её добавляю и надо чтобы новая запись похожая на старую-не сохранялась или удалялась, подскажите код и где его прописать))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 15:08 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymoreимеется таблица yeras.dbf в ней поля id_year1 и name_year1, допустим уже есть записи (2012, 2013, 2014) и при добавлении новой схожей записи, например 2013, он удалял удалял, либо не сохранял эту новую запись, прошу помогите с кодом и где лучше этот код записать???))) заранее благодарен))) А зачем, собственно, добавлять НОВУЮ СХОЖУЮ запись. Если есть 2013, то зачем добавлять еще 2013 ???? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 15:11 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, допустим пользователь блондинка) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 15:13 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
ClaymoreIgorNG, допустим пользователь блондинка) Видимо, поэтому и не добавляется :):) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 16:15 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, чет после твоего подкола, я себя чувствую блондинкой)) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 16:19 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymore, Ну мы ж не знаем, что у тебя висит на кнопках "Добавить", "Удалить", "Command3" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 16:37 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, в "добавить" thisform.grid1.readonly = .F. public lastnomer select pn go top lastnomer=pn.pn_year+1 replace pn.pn_year with lastnomer select years APPEND BLANK replace years.id_year1 with lastnomer THISFORM.GRID1.column1.text1.style = 0 THISFORM.GRID1.SetFocus THISFORM.REFRESH кнопка "удалить" PRIVATE n_Rec select years IF MESSAGEBOX ("Óäàëèòü ýòó çàïèñü?", 4 + 32 + 256) = 6 n_Rec=RECNO() DELETE NEXT 1 ENDIF IF !EOF() SKIP 1 ENDIF IF EOF() AND !BOF() SKIP -1 ENDIF THISFORM.GRID1.SetFocus THISFORM.REFRESH кнопка "выход" thisform.Release кнопка command-я её удалю позже))) она не нужная)) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 16:42 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymore, в форме процедура init set deleted on GO top процедура load select years set order to name_year1 процедура destroy SELECT years DELETE FROM years WHERE TRIM(years.NAME_year1)= ' ' ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 16:43 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
ClaymoreIgorNG, в "добавить" thisform.grid1.readonly = .F. public lastnomer select pn go top lastnomer=pn.pn_year+1 replace pn.pn_year with lastnomer select years APPEND BLANK replace years.id_year1 with lastnomer А почему в новую запись добавляется только id_year1 ? А как насчет name_year1 ? THISFORM.GRID1.column1.text1.style = 0 THISFORM.GRID1.SetFocus THISFORM.REFRESH кнопка "удалить" PRIVATE n_Rec select years IF MESSAGEBOX ("Óäàëèòü ýòó çàïèñü?", 4 + 32 + 256) = 6 n_Rec=RECNO() DELETE NEXT 1 ENDIF IF !EOF() SKIP 1 ENDIF IF EOF() AND !BOF() SKIP -1 ENDIF THISFORM.GRID1.SetFocus THISFORM.REFRESH кнопка "выход" thisform.Release кнопка command-я её удалю позже))) она не нужная)) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 17:23 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, а там в таблице сам уже вписываешь год, тот который тебе нужен) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 08:06 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, select fld from tbl group by fld having count(*)>1 во что то наподобие есть, только он тут выводит таблицу со значениями которые уже имеются, а мне нужен код чтобы он предотвратил копию записи, (вторую запись, которая уже имеется) , чтобы например уже имеется в таблице 2013 год, а я когда пишу еще 2013, чтобы он не сохранялся, а например стирался или удалялся автоматически, я не знаю как код записать и где ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 08:49 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
ClaymoreIgorNG, а там в таблице сам уже вписываешь год, тот который тебе нужен) По кнопке "Добавить" сделай формочку с полем ввода нового года и проверяй наличие введенного в таблице годов. Если не найдено, тогда добавляй, а если уже существует - не добавляй. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 10:20 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, ээээмммм, прости не понял, а как будет выглядеть код?) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 10:31 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
ClaymoreIgorNG, ээээмммм, прости не понял, а как будет выглядеть код?) в форме с полем ввода года Text1 и кнопкой "Ок" в click которой что-то типа: SELECT years LOCATE FOR RTRIM(THISFORM.Text1.Value) = RTRIM(name_year1) IF NOT FOUND() select pn && я, правда, не знаю что это за таблица, но судя по коду это id_year go top lastnomer=pn.pn_year+1 replace pn.pn_year with lastnomer INSERT INTO years VALUES (lastnomer, RTRIM(THISFORM.Text1.Value)) ENDIF THISFORM.Release ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 10:57 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, я написал код в форме с полем ввода года Text1, который ты мне скинул в процедуре "click" : SELECT years LOCATE FOR RTRIM(THISFORM.Text1.Value) = RTRIM(name_year1) IF NOT FOUND() select pn && я, правда, не знаю что это за таблица, но судя по коду это id_year go top lastnomer=pn.pn_year+1 replace pn.pn_year with lastnomer INSERT INTO years VALUES (lastnomer, RTRIM(THISFORM.Text1.Value)) ENDIF THISFORM.Release после ввода нажимаю на таблицу форма закрывается, а запись добавлена, или я неправильно тебя понял :( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 11:11 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
ClaymoreIgorNG, я написал код в форме с полем ввода года Text1, который ты мне скинул в процедуре "click" : SELECT years LOCATE FOR RTRIM(THISFORM.Text1.Value) = RTRIM(name_year1) && Поиск в таблице введенного года IF NOT FOUND() && Не найден select pn && я, правда, не знаю что это за таблица, но судя по коду это id_year go top lastnomer=pn.pn_year+1 replace pn.pn_year with lastnomer INSERT INTO years VALUES (lastnomer, RTRIM(THISFORM.Text1.Value)) && Добавление года ELSE && Год найден MESSAGEBOX("Такой год в таблице уже существует") ENDIF THISFORM.Release после ввода нажимаю на таблицу форма закрывается, а запись добавлена, или я неправильно тебя понял :( Меня не надо понимать, понимать нужно код. Я отсюда не вижу какую таблицу ты нажимаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 11:46 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, блин, чет не врублюсь....он мне при любом добавлении выкидывает окошко что этот год уже существует, хотя при этом я добавляю несуществующий год в записи(((( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 12:01 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymore, добавь в свою таблицу новое поле ID типа Integer (AutoInc). И потом хоть тыщчу одинаковых записей плоди, в этом поле автоматом будет счётчик меняться. При выборке цепляй и это поле тоже. И потом удаляй по условию where id=N(номер id). И всего то делов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 12:26 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymore, Ну, чудес не бывает. Либо действительно есть, либо что-то не так сделал. из командного окна открой таблицу years set deleted off browse и посмотри что есть в поле name_year1 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 12:30 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Сперва правда добавь поле Id просто как Integer. Потом выполни команду REPLACE ALL id WITH RECNO(). Потом modi stru и изменяешь в структуре таблицы тип поля с Integer на Integer(AutoInc). Заодно подправь там текущее значение поля. Ну, если у тебя было 5 записей, то поставишь счётчик на 6 в текущее значение И всё! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 12:30 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
descent52Claymore, добавь в свою таблицу новое поле ID типа Integer (AutoInc). И потом хоть тыщчу одинаковых записей плоди, в этом поле автоматом будет счётчик меняться. При выборке цепляй и это поле тоже. И потом удаляй по условию where id=N(номер id). И всего то делов ТСу как раз и нужно, чтоб не было одинаковых записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 13:21 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 13:25 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
descent52, я чет не понял, сейчас найду инфо про это и попробую разобраться) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 13:26 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
descent52, нееее, я наверн понял, такой вариант не подходит, потому что возможно понадобится фишка такая с профилями, чтобы не допустить дубликаты профилей ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 13:31 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymoredescent52, нееее, я наверн понял, такой вариант не подходит, потому что возможно понадобится фишка такая с профилями, чтобы не допустить дубликаты профилей А профили то здесь каким боком? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 13:35 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, в будущем с другой программой) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 13:36 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, Ребята, всем респектуха, что не прошли мимо моей проблемки))))) придумал я одну фишку короче)))) вот код object (grid1.column1.text1) procedure (Valid) select count(*) as sss from years where name_year1=this.value into ARRAY AAA \\делает поиск по полям ищет дубликат при добавлении if aaa(1)>0 \\если дубликат найден this.value=" " \\то строка стирается endif \\конец а у меня в форме имеется код object (form1) procedure (destroy) SELECT years \\берем таблицу years DELETE FROM years WHERE TRIM(years.NAME_year1)= ' ' \\удаляем поле запись после закрытия формы если она пуста хэппи енд, юхууу))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 13:44 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
ClaymoreIgorNG, Ребята, всем респектуха, что не прошли мимо моей проблемки))))) придумал я одну фишку короче)))) вот код object (grid1.column1.text1) procedure (Valid) select count(*) as sss from years where name_year1=this.value into ARRAY AAA \\делает поиск по полям ищет дубликат при добавлении if aaa(1)>0 \\если дубликат найден this.value=" " \\то строка стирается endif \\конец а у меня в форме имеется код object (form1) procedure (destroy) SELECT years \\берем таблицу years DELETE FROM years WHERE TRIM(years.NAME_year1)= ' ' \\удаляем поле запись после закрытия формы если она пуста хэппи енд, юхууу))))) Это не хэппи енд. Сначала ты добавляешь новую запись с id, потом в нее вводишь год с проверкой на дубликат и если такой год есть, то ты его стираешь, а потом еще и удаляешь эту запись. Логичней было бы дать возможность пользователю ввести, потом проанализировать и на основании анализа либо добавить запись, либо написать пользователю, что он либо тупой, либо невнимательный. Мне бы, как юзеру, показалось бы странным, что введенный мной текст магическим образом исчезает без объяснения причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 14:19 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, Хммм, кстати да, вы правы, пожалуй я внесу кое какие корректировки: object (grid1.column1.text1) procedure (Valid) select count(*) as sss from years where name_year1=this.value into ARRAY AAA \\делает поиск по полям ищет дубликат при добавлении if aaa(1)>0 \\если дубликат найден messagebox('Такой год в таблице уже существует') this.value=" " \\то строка стирается endif \\конец ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 14:34 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
IgorNG, Спасибо еще раз)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 14:38 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Я так понимаю поле символьное, тогда пользователь может написать " 2013" т.е. нажать {пробел}2013 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 14:41 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Dima T, фаак, черт, код не надежный оказался((( он начинает тупо удалять даты, когда ошибусь ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 14:50 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
ClaymoreDELETE FROM years WHERE TRIM(years.NAME_year1)= ' ' \\удаляем поле запись после закрытия формы если она пуста это означает удалить все что НЕ пустое и начинается с пробела при SET EXACT OFF а при SET EXACT ON вообще ничего не удаляет замени на Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2014, 15:04 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Dima T, Спасибо. использую твой вариант))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 09:43 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Claymore, кстати вот конечный код, который работает...может он говнокод, но он работает в моем случае))) значит object:grid1.column1.text1 procedure:Valid THIS.Value = alltrim(this.value) select count(*) as sss from years where name_year1=this.value into ARRAY AAA if aaa(1)>0 this.value=" " messagebox('Такой год в таблице уже существует') endif thisform.grid1.column1.text1.readonly = .T. thisform.grid1.column1.text1.style = 1 thisform.refresh ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 09:45 |
|
Как исключить добавления повторяющихся записей в таблицу?
|
|||
---|---|---|---|
#18+
Я не понял, а чем индекс типа Candidate не устраивает? Наличие такого индекса просто не даст создать запись с тем же значением ключа. Возможно, добавить в индекс FOR-условие, чтобы исключить из проверки записи, помеченные как удаленные. Ну, и надо будет озаботится отсечением ведущих пробелов в момент записи. Алгоритмы с предварительной проверкой - ущербны, поскольку не рассчитаны на многопользовательскую работу. Сценарий приводящий к дублям 1. Первый пользователь выполнил проверку 2. Второй пользователь выполнил проверку 3. Первый пользователь записал значение 4. Второй пользователь записал то же самое значение Причем под вторым пользователем может оказаться тот же самый человек просто дважды открывший приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 22:52 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1582768]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
86ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 201ms |
0 / 0 |