Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опят БД, почему происходит зацикливание 
:(
    Опции темы
REVOLT
  Дата 15.9.2004, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 5.4.2004
Где: г. Бузулук

Репутация: нет
Всего: нет



Код

Private Sub AddRecBut_Click()
AddNameText.Text = ""
If AddProgOpt.Value = False And AddSiteOpt.Value = False Then
MsgBox "Выбирите что будем добовлять", vbCritical, "Внимание!"
End If

 Dim HaveName As Integer
 On Error Resume Next
 HaveName = 6
 Select Case True
   Case AddProgOpt.Value
     Do Until ProgData.Recordset.EOF
       If ProgData.Recordset("Name") = AddNameText.Text Then HaveName = MsgBox("Программа с таким именем уже имеется. Продолжить?", vbYesNo, KatalogForm.Caption)
       ProgData.Recordset.MoveNext '[b]ВОТ В ЭТОМ МОМЕНТЕ ИДЁТ ЗАЦИКЛИВАНИЕ[/b]
     Loop
     If HaveName = 6 And Trim$(AddPartCombo.Text) <> "" And Trim$(AddNameText.Text) <> "" And Trim$(AddSiteText.Text) <> "" Then
       ProgData.Recordset.AddNew
       ProgData.Recordset![Part] = AddPartCombo.Text
       ProgData.Recordset![Name] = AddNameText.Text
       ProgData.Recordset![Site] = AddSiteText.Text
       ProgData.Recordset![License] = AddLicenseText.Text
       ProgData.Recordset![Note] = AddNoteText.Text
       ProgData.Recordset.Update
       MsgBox "    Запись добавлена!    ", , KatalogForm.Caption
       Call UpdateProgList("", "")
       AddPartCombo.Text = "": AddNameText.Text = "": AddSiteText.Text = "": AddLicenseText.Text = "": AddNoteText.Text = ""
     ElseIf HaveName = 6 Then
       MsgBox "Введите данные в поля со звёздочкой!", vbCritical, KatalogForm.Caption
     End If
   Case AddSiteOpt.Value
     Do Until SiteData.Recordset.EOF
       If SiteData.Recordset("Site") = AddSiteText.Text Then HaveName = MsgBox("Сайт с таким именем уже имеется. Продолжить?", vbYesNo, KatalogForm.Caption)
       SiteData.Recordset.MoveNext '
     Loop
     If HaveName = 6 And Trim$(AddPartCombo.Text) <> "" And Trim$(AddSiteText.Text) <> "" Then
       SiteData.Recordset.AddNew
       SiteData.Recordset![Part] = AddPartCombo.Text
       SiteData.Recordset![Site] = AddSiteText.Text
       SiteData.Recordset![Model] = AddNameText.Text
       SiteData.Recordset![Note] = AddNoteText.Text
       SiteData.Recordset![DataPrivoz] = Text1.Text
             
       SiteData.Recordset.Update
       MsgBox "    Запись добавлена!    ", , KatalogForm.Caption
       Call UpdateSiteList("", "")
       AddPartCombo.Text = "": AddSiteText.Text = "": AddNoteText.Text = ""
     ElseIf HaveName = 6 Then
       MsgBox "Введите данные в поля со звёздочкой!", vbCritical, KatalogForm.Caption
     End If
 End Select
End Sub

Вот впрос! Как есле имя сайта существует то не обращать на это внимания а просто добавить его!
PM MAIL WWW ICQ   Вверх
-Mikle-
Дата 16.9.2004, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Ну убери проверку на существование записи в рекордсете... просто добавь его и все!
Или я чего то не понял? Если так, объясни получше, что надо сделать....


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Akina
Дата 16.9.2004, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



А ихде ProgData.Recordset.MoveFirst ?

И вместо Do Until ProgData.Recordset.EOF ... Loop используй While NOT ProgData.Recordset.EOF ... Wend - оно устойчивее.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
-Mikle-
Дата 16.9.2004, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Цитата(Akina @ 16.9.2004, 12:42)
А ихде ProgData.Recordset.MoveFirst ?

И вместо Do Until ProgData.Recordset.EOF ... Loop используй While NOT ProgData.Recordset.EOF ... Wend - оно устойчивее.
Согласен.
И вообще можно выход Exit Do из цикла сделать после
Код
If ProgData.Recordset("Name") = AddNameText.Text Then HaveName = MsgBox("Программа с таким именем уже имеется. Продолжить?", vbYesNo, KatalogForm.Caption) : Exit do
  ProgData.Recordset.MoveNext


Если такая запись есть, то спросить и выйти из цикла... зачем дальше проверять...
И еще совет, если позволишь... используй не
Dim HaveName As Integer
а Dim HaveName As vbMsgboxResult и константы vbYes, vbNo и т.д.
так нагляднее и удобнее, после того как нажмешь "равно" после имени переменной, выползет список со всеми возможными константами...


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Akina
Дата 16.9.2004, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



-Mikle-
Цитата
Если такая запись есть, то спросить и выйти из цикла... зачем дальше проверять...

Я вообще не понимаю, зачем проверять. Почему нельзя сразу в запросе на получение рекордста не запросить именно нужную запись и проверить что рекордсет не пуст?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
-Mikle-
Дата 16.9.2004, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Ну этот вопрос не ко мне, а к REVOLT smile.gif
Пусть скажет поточнее задачу, а мы (vingrad'овцы) ему поможем smile.gif если сможем...


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
REVOLT
Дата 16.9.2004, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 5.4.2004
Где: г. Бузулук

Репутация: нет
Всего: нет



Увожаемые профи! Как я понял зацикливание идёт потому-что нет выхода из цикла? Т.е. Exit do.
Просто я сейчас на работе а VB тут нет sad.gif
И ещё! Я не профессиональный программист! А так начинаюший, подскажите, не точнее перепишите этот код но чтобы был совсем без этих Циклов. В смысле чтобы не спрашивал, а сразу добоалял.

С уважением, Revolt!
PM MAIL WWW ICQ   Вверх
-Mikle-
Дата 16.9.2004, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



ща дам...


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
-Mikle-
Дата 16.9.2004, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Вот вроде так:
Код

Private Sub AddRecBut_Click()
  If AddProgOpt.Value = False And AddSiteOpt.Value = False Then
     MsgBox "Выбирите что будем добовлять", vbCritical, "Внимание!"
  End If
 
  On Error GoTo labErrAdd
  Select Case True
     Case AddProgOpt.Value
        If Trim$(AddPartCombo.Text) <> "" And Trim$(AddNameText.Text) <> "" And Trim$(AddSiteText.Text) <> "" Then
           ProgData.Recordset.AddNew
           ProgData.Recordset![Part] = AddPartCombo.Text
           ProgData.Recordset![Name] = AddNameText.Text
           ProgData.Recordset![Site] = AddSiteText.Text
           ProgData.Recordset![License] = AddLicenseText.Text
           ProgData.Recordset![Note] = AddNoteText.Text
           ProgData.Recordset.Update
           MsgBox "    Запись добавлена!    ", , KatalogForm.Caption
           Call UpdateProgList("", "")
           AddPartCombo.Text = "": AddNameText.Text = "": AddSiteText.Text = "": AddLicenseText.Text = "": AddNoteText.Text = ""
        Else
           MsgBox "Введите данные в поля со звёздочкой!", vbCritical, KatalogForm.Caption
        End If
     Case AddSiteOpt.Value
        If Trim$(AddPartCombo.Text) <> "" And Trim$(AddSiteText.Text) <> "" Then
           SiteData.Recordset.AddNew
           SiteData.Recordset![Part] = AddPartCombo.Text
           SiteData.Recordset![Site] = AddSiteText.Text
           SiteData.Recordset![Model] = AddNameText.Text
           SiteData.Recordset![Note] = AddNoteText.Text
           SiteData.Recordset![DataPrivoz] = Text1.Text
           SiteData.Recordset.Update
           MsgBox "    Запись добавлена!    ", , KatalogForm.Caption
           Call UpdateSiteList("", "")
           AddPartCombo.Text = "": AddSiteText.Text = "": AddNoteText.Text = ""
        Else
           MsgBox "Введите данные в поля со звёздочкой!", vbCritical, KatalogForm.Caption
        End If
  End Select
  Exit Sub

labErrAdd:
  MsgBox "Num: " & Err.Number & vbCrLf & _
         "Desc: " & Err.Description, vbCritical, "Error in AddRecBut_Click()"
End Sub
Проверяй... потом скажешь...

Это сообщение отредактировал(а) -Mikle- - 16.9.2004, 16:58


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
REVOLT
Дата 18.9.2004, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 5.4.2004
Где: г. Бузулук

Репутация: нет
Всего: нет



Что то не выходит, показыват сообщение "Error in AddRecBut_Click()"
и всё. мне надо сделать так чтобы запись добавлялась не зависимо от того есть ли она в Листи или нет
PM MAIL WWW ICQ   Вверх
-Mikle-
Дата 18.9.2004, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Цитата(REVOLT @ 18.9.2004, 14:58)
Что то не выходит, показыват сообщение "Error in AddRecBut_Click()"

Это из строки
Код
labErrAdd:
MsgBox "Num: " & Err.Number & vbCrLf & _
   "Desc: " & Err.Description, vbCritical, "Error in AddRecBut_Click()"
End Sub

А какое сообщение (Num,Desc)? Возможно что у тебя в самой БД в одном или нескольких столбцах установлен параметр "Индексированое поле (совпадения не допускаются)"?

ЗЫ: БД какая? Аксес?


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
REVOLT
Дата 18.9.2004, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 5.4.2004
Где: г. Бузулук

Репутация: нет
Всего: нет



Цитата
ЗЫ: БД какая? Аксес?


Да Аксес!
PM MAIL WWW ICQ   Вверх
-Mikle-
Дата 18.9.2004, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Пришли на мыло структуру БД, я посмотрю...
Если файл не большой, то все базу давай....
Разберемся, сделаем smile.gif

mailto: [email protected]

Это сообщение отредактировал(а) -Mikle- - 18.9.2004, 16:09


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
REVOLT
Дата 18.9.2004, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 5.4.2004
Где: г. Бузулук

Репутация: нет
Всего: нет



Я намылил тебе весь исходник. Ну вопрос описывать ещё раз не буду.
ТОгда как ответь мылом или тут?
PM MAIL WWW ICQ   Вверх
-Mikle-
Дата 18.9.2004, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Щас уже поздно, я завтра с утра разберусь, и потом тут дам ответ


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.