powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с двойным сохранением
13 сообщений из 13, страница 1 из 1
Проблема с двойным сохранением
    #32230304
Rover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
достался мне чужой ASP код :( там есть такие строчки:
sql = "INSERT INTO Mail (From_FK,To_FK,Subject,Body,Datesent,Sent,Draft,Deleted,Inbox,Read)" & _
" VALUES ('" & from_id & "','" & _
to_id & "','" & _
request("Subject") & "','" & _
message & "','" & _
Date() & "','No','Yes','No','No','No')"
set rst3 = Server.CreateObject("ADODB.Recordset")
rst3.Open sql, objDB, adOpenStatic
set rst3 = nothing
Response.Redirect "SMailMainDrafts.asp"

но добавляет 2 ! раза одинаковую запись. Если закомментировать rst3.Open sql, objDB, adOpenStatic, то не добавляет ни одной (что говорит о том, что только в этом месте происходит сохранение :)) Я уже ума не приложу, почему? Может, что-то в самом Access'е намудрено?
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32230593
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не специалсит я по ASP,
а что находиться в Response.Redirect "SMailMainDrafts.asp", не там ли еще одно добавление ?
==
А код вроде нормальный. Должна вставляться 1 строка. 2-ая у тебя наверное в другом месте вставляеться
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32230597
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ответ предыдущего оратора выглядит как ответ человека, плохо прочитавшего вопрос.

Вопрос: ...только в этом месте происходит сохранение...
Ответ: ...не там ли еще одно добавление ?.. 2-ая у тебя наверное в другом месте вставляеться

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

Вопрос ко мне: сам-то понял, чего сказал?
Ответ: а не знаю. Просто мысли вслух, метод мозгового штурма.
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32230703
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, если мы будем заниматься синтакситечским анализом ответов друг друга получиться ... большой научный труд \r
\r
Но все равно попробую уточнить, что я хотел сказать: код нормальный, единственная строка, которая мне не понятна это Response.... скорее всего благодаря ей и происходит дубль\r
\r
А когда я написал: "2-ая у тебя наверное в другом месте вставляеться", я имел ввиду просто другое место, на тот случай, если Rover не весь код выложил. Вот так все сложно :)\r
\r
==\r
Давай, Саныч, еще и орфографические ошибки исправлять - один уже пробовал \r
Это я к одной фразе: \r
Код: plaintext
1.
2.
\r
 “Он восклонившись сказал им: кто из вас без греха, первый брось на нее камень”. (Иоанн,  8 . 7 .) \r
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231058
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Виктор, орфографические ошибки я могу исправлять в любых количествах. Я по одной из профессий корректор. Я иногда могу по стилю ошибок понять, кто автор поста (не читая, кто автор, разумеется). Но если я сейчас начну исправлять, то меня весь форум дружно пристрелит в первую же минуту.
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231120
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>, то меня весь форум дружно пристрелит в первую же минуту.



>Я по одной из профессий корректор

Тогда тебе тяжело смотреть на все это безобразие. Когда работал в одном маленьком издательстве, встречался с корректорами: члены союзов журналистов, преподы - жуть как не любили ошибки.

==
Прикол из моего быв. издательства, выпустившее книжецу типа "куда пойти учиться"
В одном из объявлении был текст типа "ВУЗ проводит день открытых дверей"
и телефон. По ошибке дали телефон морга. Никто бы так и не спохватился бы, пока не позвонили из этого самого морга с приблизительно след. текстом: "У нас, конечно, двери всегда открыты, но не да такой же степени, чтобы узнать, когда можно прийти, чтобы все выснить подробней". Смеялись долго
Говорят один из юмористов использовал этот случай в своих юморестках.
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231200
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Тогда тебе тяжело смотреть на все это безобразие.

Не столько тяжело, сколько непонятно. Когда человек пишет программу, то там он приучен, что писать надо правильно, а то работать не будет. Непонятно, почему эта привычка у большинства не переносится на обыденную жизнь.
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231623
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернемся к нашим баранам,то бишь к сабжу.
2 Rover
Попробуй так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
sql =  "INSERT INTO Mail (From_FK,To_FK,Subject,Body,Datesent,Sent,Draft,Deleted,Inbox,Read)"  & _ 
 " VALUES ('" & from_id & "','" & _ 
to_id & "','" & _ 
request("Subject") & "','" & _ 
message & "','" & _ 
Date() & "','No','Yes','No','No','No')"  
objDB.Execute sql
Response.Redirect  "SMailMainDrafts.asp"  

2 All
Объясните мне пожалуйста, зачем надо открывать рекордсет запросом INSERT... ?
Может я чего то не понимаю?
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231641
Rover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 VIG
Объясните мне пожалуйста, зачем надо открывать рекордсет запросом INSERT... ?
Может я чего то не понимаю?


Не знаю, код не я писал (это я так, в свое оправдание ;)). Поубирал

Код вообще очень интересный какой-то:

в файле SMailCompose.asp есть такие строчки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
	if request( "action" ) =  "draft"  then
		
		
		sql =  "SELECT userid FROM Profile WHERE username='" & request("To_Username") & "'" 
		set rst2 = Server.CreateObject( "ADODB.Recordset" )
		rst2.Open sql, objDB, adOpenStatic
		if rst2.EOF then response.redirect( "SMailCompose.asp?error=nullto" )
		to_id = rst2( "userid" )
		
		while not rst2.EOF
			response.write(to_id)
		rst2.MoveNext
		wend
		
		set rst2 = nothing
		from_id = Request.Cookies( "Agape" )( "UserId" )
		
		message = replace(request( "Message" ), "'","''")
		message = replace(message,"""","""")	
	
		sql = "INSERT INTO Mail (From_FK,To_FK,Subject,Body,Datesent,Sent,Draft,Deleted,Inbox,Read)" & _
		" VALUES ('"  & from_id &  "','"  & _
		to_id &  "','"  & _
		request( "Subject" ) &  "','"  & _
		message &  "','"  & _
		Date() &  "','No','Yes','No','No','No')"
		'set rst3 = Server.CreateObject(" ADODB.Recordset ")
		'rst3.Open sql, objDB, adOpenStatic
		'set rst3 = nothing
		objDB.Execute sql
		Response.Redirect " SMailMainDrafts.asp"
	end if


в файле же SMailMainDrafts.asp:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	if request( "action" ) <>  "" then
	
		for counter=1  to Request("action ")
			id = request(counter)
			
			if request(counter) <> checked then
				sql = " UPDATE Mail SET Sent='No', Draft='No', Deleted='Yes', Inbox='No' "
				sql = sql & "  WHERE ID = " & request(counter)
				'set rst = Server.CreateObject("ADODB.Recordset")
				'rst.Open sql, objDB, adOpenStatic
				'set rst = nothing
				objDB.Execute sql
			end if
			
		next
		
	end if


более ничего подозрительного вроде нет (одни селекты). Этот код вообще удивление вызывает:
Код: plaintext
for counter= 1  to Request( "action" ) 
т.е. action должен быть числовой. Мы же не передаем вообще action
Код: plaintext
Response.Redirect  "SMailMainDrafts.asp" 


следовательно этот код вообще не должен выполняться


результаты "тестов":
1. комментируем в SMailCompose.asp execute - не выполняется ничего
2. комментируем в SMailMainDrafts.asp execute -добавляет в базе 2 записи (абсолютно одинаковые и такие же по остальным параметрам, что и предыдущие, что следует, что в этот кусок не попадает вообще).
т.е. вся проблема в

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
		sql =  "SELECT userid FROM Profile WHERE username='" & request("To_Username") & "'" 
		set rst2 = Server.CreateObject( "ADODB.Recordset" )
		rst2.Open sql, objDB, adOpenStatic
		if rst2.EOF then response.redirect( "SMailCompose.asp?error=nullto" )
		to_id = rst2( "userid" )
		
		while not rst2.EOF
			response.write(to_id)
		rst2.MoveNext
		wend
		
		set rst2 = nothing
		from_id = Request.Cookies( "Agape" )( "UserId" )
		
		message = replace(request( "Message" ), "'","''")
		message = replace(message,"""","""")	
	
		sql = "INSERT INTO Mail (From_FK,To_FK,Subject,Body,Datesent,Sent,Draft,Deleted,Inbox,Read)" & _
		" VALUES ('"  & from_id &  "','"  & _
		to_id &  "','"  & _
		request( "Subject" ) &  "','"  & _
		message &  "','"  & _
		Date() &  "','No','Yes','No','No','No')"
		'set rst3 = Server.CreateObject(" ADODB.Recordset ")
		'rst3.Open sql, objDB, adOpenStatic
		'set rst3 = nothing
		objDB.Execute sql
		Response.Redirect " SMailMainDrafts.asp"
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231684
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Rover
Даже не знаю что сказать.Единственное,что приходит в голову:А как ты видишь ,что вставляется 2 записи?Другими словами м.б уже есть одна такая запись + та ,которая вставляется инсертом=2 записи ?
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231771
Rover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG

Залажу в базу и смотрю. Добавляется за раз 2 записи - это точно! Может, действительно есть еще какие-то средства Access, что делают что-то вледствии каких-то событий?
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32231772
Rover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблему решил вот таким путем:

в файле SMailCompose сделал так:
Код: plaintext
1.
2.
3.
if request( "action" ) =  "draft"  then
		response.redirect  "SMailDraftSave.asp?To_Username="  & Request( "To_Username" ) &  "&Message="  & Request( "Message" ) &  "&Subject="  & request( "Subject" ) 
		
	end if


а в новосозданный SMailDraftSave.asp перенес точно такой код. Почему происходило 2 записи - для меня осталось загадкой...
...
Рейтинг: 0 / 0
Проблема с двойным сохранением
    #32537310
UserUnknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автордостался мне чужой ASP код :( там есть такие строчки:
sql = "INSERT INTO Mail (From_FK,To_FK,Subject,Body,Datesent,Sent,Draft,Deleted,Inbox,Read)" & _
" VALUES ('" & from_id & "','" & _
to_id & "','" & _
request("Subject") & "','" & _
message & "','" & _
Date() & "','No','Yes','No','No','No')"
set rst3 = Server.CreateObject("ADODB.Recordset")
rst3.Open sql, objDB, adOpenStatic
set rst3 = nothing
Response.Redirect "SMailMainDrafts.asp"
Может код выполнялся не один раз?
Можно было попробовать вставить в него что-нибудь типа
response.write("Запись добавлена") и посмотреть сколько раз выведется
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с двойным сохранением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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