Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Excel+Access Добавлено: 27.05.08 20:30  

Автор вопроса:  Helgi
Доброго времени суток!
Пишу приложение для работы с access базой данных в excel. У меня 5 таблиц, 3 из них справочники, 2

главных. В начале работы приложения я открываю все 5 таблиц(работаю через Recordset) и потом по мере

надобности с манипулирую ими.Так вот, я столкнулся с такой проблемой: Для 3-х таблиц(справочников)

удаление/редактирование/добавление работает, а для главных ругается что таблица открыта только для чтения,

хотя код для открытия набора данных у меня одинаковый для всех таблиц, код на редактирование/удаление/

добавление тоже идентичен, все таблицы лежат в одном MDB файле... с чем это может быть связано?
Пример кода:

'для таблицы-справочника
Sub SotovyUpdate() 'Обновление
    QS = "SELECT Marka.M_Marka, Model.MOD_MODEL, Sotovy.S_Opis,

Sotovy.S_Foto,Sotovy.S_Marka,Sotovy.S_Model FROM Model INNER JOIN (Marka INNER JOIN Sotovy ON Marka.M_ID =

Sotovy.S_Marka) ON Model.MOD_ID = Sotovy.S_Model;"
    Set RSSot = DB.OpenRecordset(QS, dbOpenDynaset, dbDenyRead + dDenyWrite)
End Sub

With RSSot
    .AddNew 'добавление
    .Fields("S_MARKA").Value = MARKA_ID
    .Fields("S_MODEL").Value = MODEL_ID
    .Fields("S_OPIS").Value = SOPIS
    .Fields("S_FOTO").Value = path
    .Update
   End With

'для главной таблицы
Sub SkPokUpdate()
    QS = "SELECT M_MARKA,MOD_MODEL,SKPOK_KOLVO,SKPOK_CENA,SKPOK_DATA,S_OPIS,S_FOTO FROM

SkladPok,Model,Marka,Sotovy "
    QS = QS & "WHERE(SKPOK_SOTID = S_ID AND S_MARKA = M_ID AND S_MODEL = MOD_ID)"
    Set RSSkPok = DB.OpenRecordset(QS, dbOpenDynaset, dbDenyRead + dDenyWrite)
End Sub

With RSSkPok
 .AddNew
 .Fields("SKPOK_SOTID").Value = S_ID
 .Fields("SKPOK_KOLV").Value = Kolv
 .Fields("SKPOK_CENA").Value = Cena
 .Fields("SKPOK_Data").Value = Data
 .Update
End With

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #1 Добавлено: 27.05.08 20:49
Попробуй для проверки убрать из секции SELECT те поля, которые имеют отношение к "справочникам".

Ответить

Номер ответа: 2
Автор ответа:
 Helgi



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 27.05.08 21:09
Хм... так работает... а как это можно исправить?

Ответить

Номер ответа: 3
Автор ответа:
 Helgi



Вопросов: 1
Ответов: 2
 Профиль | | #3 Добавлено: 27.05.08 21:14
Огромное спасибо) В принципе, исправил) Но если есть более рациональные предложения, буду очень рад)

Ответить

Номер ответа: 4
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #4 Добавлено: 27.05.08 21:26
Попробуй связать поля в секции FROM через INNER JOIN. И кроме того, как-то извратно обновлять/добавлять записи через SELECT с последующим апдейтом рекордсета. Может сразу "INSERT INTO SkladPok (SKPOK_KOLVO,SKPOK_CENA,SKPOK_DATA) VALUES (_,_,_) ...."

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам