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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос на удаление, Глюк 
:(
    Опции темы
wetlook
Дата 17.11.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 16.11.2006

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



Привет ребята! Летом писал приложение на MS Access & VBA для складского учета. Понадобилось организовать потребительскую корзину и я сделал отдельную табличку для этих целей, обработотчик для поставок, продаж. Но приходиться каждый раз табличку эту подчищать запросом, после которого приложение закрывется автоматически.....Кто-нибудь знает почему так происходит ?.
Есть мысля что это из-за отображения на форму, когда данные удаляются то запрос на отображенее данных ни фига не отображает, и форма начинет глючить но это только догадки....
Вот код обработчика поставок:
Код

Private Sub bDebit_Click()
On Error GoTo Err_bDebit_Click
    'открывем таблицу-корзину
    OpenDb ("blinn")
    'запоминаем последнюю запись корзины
    rec.MoveLast
    temp = rec("id")
    rec.MoveFirst

Do
       i = rec("id")
       thing = rec("thing")
       value = rec("value")
       Data = Дата.value
       sender = Поставщик.value
       'Если кол-во товара >0
       If value > 0 Then
       'открывем таблицу поставок и пишем данные
             OpenDb ("debit")
             rec.AddNew
             rec("debit") = value
             rec("thing") = thing
             rec("date") = Data
             rec("№") = Счет.value
             rec("sender") = sender
             rec.Update
             'Ищем в таблице статуса идентификатор текущего товара
             FindCrit = " thing= " & thing
             OpenDb ("status")
             rec.FindFirst FindCrit
             'Если такого товара в таблице статуса нет то добавляем запись
             If rec.NoMatch Then
                   rec.AddNew
                   rec("thing") = thing
                   rec("value") = value
                   rec.Update
             Else
             'если есть то обновляем эту запись и увиличиваем кол-во товара
                    rec.Edit
                    rec("value") = rec("value") + value
                    rec.Update
             End If
         End If
         'Проверяем последняя ли запись корзины обрабатывалась если да то break;
         OpenDb ("blinn")
         FindCrit = "id=" & i
         rec.FindFirst FindCrit
        If rec("id") = temp Then
                 Exit Do
        End If
        'если нет то переходим к следущей записи корзины 
        rec.MoveNext
        Loop While rec("id") <> 0
'--------------ЗАПРОС НА УДАЛЕНИЕ ПОСЛЕ КОТОРОГО ВЫЛЕТАЕМ ИЗ ПРИЛОЖЕНИЯ ----------------------
DoCmd.OpenQuery ("clear_blinn")
'---------------ЗАКРЫТИЕ ФОРМЫ----------------------------------------------------------------------------------------
DoCmd.Close

Exit_bDebit_Click:
    Exit Sub

Err_bDebit_Click:
    MsgBox Err.Description
    Resume Exit_bDebit_Click
    
End Sub

PM MAIL   Вверх
dionisiu
Дата 17.11.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 13.5.2006
Где: Крым

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



Кажется, БД нужно закрывать перед удалением. У тебя "OpenDb ("blinn")" без "CloseDb ("blinn")"
Хотя - не знаю. Так глубоко в этих дебрях я ещё не лазил.
Таких структур мне не попадалось.

Вот вопрос - применяя OpenDb ("blinn") ты открываешь именно базу, а командой DoCmd.OpenQuery ("clear_blinn") в этой базе удаляешь какие-то записи/таблицы, но ведь не всю базу целиком??? Код запроса покажи - будем думать.

Вообще непонятно, зачем открывать БАЗУ? у тебя данные в разных БАЗАХ хранятся??? или ты так к таблице обращаешься?

PM MAIL ICQ   Вверх
wetlook
Дата 17.11.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 16.11.2006

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



Процедура OpenDb('table_name') открывает динамический набор из таблицы  table_name.
Код

.........................................
Public rec As Recordset.....
.........................................
'процедура потключения к базе данных и открытие таблицы
Public Sub OpenDb(sTable As String)

        Set Ws = DBEngine.Workspaces(0)
        dir = "D:\TD_VEGA_NEW\ТД-Вега" 
        Set Db = Ws.OpenDatabase(dir)
        Set rec = Db.OpenRecordset(sTable, dbOpendynaset)

End Sub

а запрос на удаленение из blinn :
Код


DELETE blinn.*
FROM blinn;


PM MAIL   Вверх
Rodman
Дата 17.11.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



wetlook, запрос на удаление всех записей
Код

DELETE FROM blinn;


а для определенной записи
Код

DELETE FROM blinn
WHERE (FieldBlinn='Param');


В место Param необходимо поставить удаляемое значение...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
dionisiu
Дата 18.11.2006, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 13.5.2006
Где: Крым

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



а в дебаге пошагово ты код проходил? где выкидывает из базы?
PM MAIL ICQ   Вверх
wetlook
Дата 19.11.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 16.11.2006

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



Дебагил.....после выполнения запроса что-то происходит..... и такие действия как закрытие формы или обновления приводят к краху....
PM MAIL   Вверх
wetlook
Дата 20.11.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 16.11.2006

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



Проблема решена.... Перестановкой двух сторк кода:
  • Сначала закрываем форму.
  • Удаляем все записи из корзины blinn.
Глюк остался без объяснения......

Thanks2dionisiu&Rodman
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

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

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

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


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

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


 




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


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

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