powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как исключить добавления повторяющихся записей в таблицу?
41 сообщений из 41, показаны все 2 страниц
Как исключить добавления повторяющихся записей в таблицу?
    #38526736
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имеется таблица yeras.dbf в ней поля id_year1 и name_year1, допустим уже есть записи (2012, 2013, 2014) и при добавлении новой схожей записи, например 2013, он удалял удалял, либо не сохранял эту новую запись, прошу помогите с кодом и где лучше этот код записать???))) заранее благодарен)))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38526789
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Claymoreимеется таблица yeras.dbf в ней поля id_year1 и name_year1, допустим уже есть записи (2012, 2013, 2014) и при добавлении новой схожей записи, например 2013, он ОН - это кто?удалял удалял, либо не сохранял эту новую запись, прошу помогите с кодом и где лучше этот кодКакой ЭТОТ? записать???))) заранее благодарен)))Потрудитесь переформулировать вопрос.
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527058
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov,

прости, что коряво написал)) он это код, или команда,))) с кодом помогите) сейчас картинки пришлю))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527072
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Claymore,

Вот форма с гридом где я добавляю запись
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527078
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Claymore,

Здесь я её добавляю и надо чтобы новая запись похожая на старую-не сохранялась или удалялась, подскажите код и где его прописать)))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527089
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Claymoreимеется таблица yeras.dbf в ней поля id_year1 и name_year1, допустим уже есть записи (2012, 2013, 2014) и при добавлении новой схожей записи, например 2013, он удалял удалял, либо не сохранял эту новую запись, прошу помогите с кодом и где лучше этот код записать???))) заранее благодарен)))

А зачем, собственно, добавлять НОВУЮ СХОЖУЮ запись. Если есть 2013, то зачем добавлять еще 2013 ????
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527092
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

допустим пользователь блондинка)
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527188
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClaymoreIgorNG,

допустим пользователь блондинка)

Видимо, поэтому и не добавляется :):)
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527196
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

чет после твоего подкола, я себя чувствую блондинкой))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527229
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Claymore,

Ну мы ж не знаем, что у тебя висит на кнопках "Добавить", "Удалить", "Command3"
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527232
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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-я её удалю позже))) она не нужная))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527233
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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)= ' '
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527316
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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-я её удалю позже))) она не нужная))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527735
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

а там в таблице сам уже вписываешь год, тот который тебе нужен)
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527756
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

select fld from tbl group by fld having count(*)>1

во что то наподобие есть, только он тут выводит таблицу со значениями которые уже имеются, а мне нужен код чтобы он предотвратил копию записи, (вторую запись, которая уже имеется) , чтобы например уже имеется в таблице 2013 год, а я когда пишу еще 2013, чтобы он не сохранялся, а например стирался или удалялся автоматически, я не знаю как код записать и где
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527815
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClaymoreIgorNG,

а там в таблице сам уже вписываешь год, тот который тебе нужен)

По кнопке "Добавить" сделай формочку с полем ввода нового года и проверяй наличие введенного в таблице годов. Если не найдено, тогда добавляй, а если уже существует - не добавляй.
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527831
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

ээээмммм, прости не понял, а как будет выглядеть код?)
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527868
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527891
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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


после ввода нажимаю на таблицу форма закрывается, а запись добавлена, или я неправильно тебя понял :(
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527931
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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


после ввода нажимаю на таблицу форма закрывается, а запись добавлена, или я неправильно тебя понял :(

Меня не надо понимать, понимать нужно код.
Я отсюда не вижу какую таблицу ты нажимаешь.
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38527968
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

блин, чет не врублюсь....он мне при любом добавлении выкидывает окошко что этот год уже существует, хотя при этом я добавляю несуществующий год в записи((((
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528012
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Claymore, добавь в свою таблицу новое поле ID типа Integer (AutoInc). И потом хоть тыщчу одинаковых записей плоди, в этом поле автоматом будет счётчик меняться. При выборке цепляй и это поле тоже. И потом удаляй по условию where id=N(номер id). И всего то делов
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528025
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Claymore,

Ну, чудес не бывает. Либо действительно есть, либо что-то не так сделал.
из командного окна
открой таблицу years
set deleted off
browse
и посмотри что есть в поле name_year1
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528028
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сперва правда добавь поле Id просто как Integer. Потом выполни команду REPLACE ALL id WITH RECNO(). Потом modi stru и изменяешь в структуре таблицы тип поля с Integer на Integer(AutoInc). Заодно подправь там текущее значение поля. Ну, если у тебя было 5 записей, то поставишь счётчик на 6 в текущее значение И всё!
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528136
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
descent52Claymore, добавь в свою таблицу новое поле ID типа Integer (AutoInc). И потом хоть тыщчу одинаковых записей плоди, в этом поле автоматом будет счётчик меняться. При выборке цепляй и это поле тоже. И потом удаляй по условию where id=N(номер id). И всего то делов

ТСу как раз и нужно, чтоб не было одинаковых записей.
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528148
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528150
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
descent52,

я чет не понял, сейчас найду инфо про это и попробую разобраться)
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528159
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
descent52,

нееее, я наверн понял, такой вариант не подходит, потому что возможно понадобится фишка такая с профилями, чтобы не допустить дубликаты профилей
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528167
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Claymoredescent52,

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

А профили то здесь каким боком?
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528172
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

в будущем с другой программой)
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528190
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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)= ' ' \\удаляем поле запись после закрытия формы если она пуста

хэппи енд, юхууу)))))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528255
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, потом в нее вводишь год с проверкой на дубликат и если такой год есть, то ты его стираешь, а потом еще и удаляешь эту запись.
Логичней было бы дать возможность пользователю ввести, потом проанализировать и на основании анализа либо добавить запись, либо написать пользователю, что он либо тупой, либо невнимательный.
Мне бы, как юзеру, показалось бы странным, что введенный мной текст магическим образом исчезает без объяснения причины.
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528287
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 \\конец
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528292
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

Спасибо еще раз))))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528305
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю поле символьное, тогда пользователь может написать " 2013" т.е. нажать {пробел}2013
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528340
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

фаак, черт, код не надежный оказался((( он начинает тупо удалять даты, когда ошибусь
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38528380
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClaymoreDELETE FROM years WHERE TRIM(years.NAME_year1)= ' ' \\удаляем поле запись после закрытия формы если она пуста
это означает удалить все что НЕ пустое и начинается с пробела
при SET EXACT OFF
а при SET EXACT ON вообще ничего не удаляет

замени на
Код: sql
1.
DELETE FROM years WHERE empty(years.NAME_year1)
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38529160
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Спасибо. использую твой вариант)))
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38529163
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38530220
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял, а чем индекс типа Candidate не устраивает? Наличие такого индекса просто не даст создать запись с тем же значением ключа. Возможно, добавить в индекс FOR-условие, чтобы исключить из проверки записи, помеченные как удаленные. Ну, и надо будет озаботится отсечением ведущих пробелов в момент записи.

Алгоритмы с предварительной проверкой - ущербны, поскольку не рассчитаны на многопользовательскую работу. Сценарий приводящий к дублям

1. Первый пользователь выполнил проверку
2. Второй пользователь выполнил проверку
3. Первый пользователь записал значение
4. Второй пользователь записал то же самое значение

Причем под вторым пользователем может оказаться тот же самый человек просто дважды открывший приложение.
...
Рейтинг: 0 / 0
Как исключить добавления повторяющихся записей в таблицу?
    #38540072
Claymore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

хммм, ну пока что так, а позже я постараюсь решить эту проблему, когда пойму "как её решить")
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как исключить добавления повторяющихся записей в таблицу?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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