Помогите разобраться!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
arbusov
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 04.07.2005 (Пн) 12:43

Помогите разобраться!!!

Сообщение arbusov » 01.08.2005 (Пн) 14:31

Уже очень долго делал программу, включающую оболочку БД(MS SQL) на DataGrid - ах, пока не выяснилось, что нормально работать с таблицами(добавлять + обновлять + удалять) получается тоько с простейшими таблицами, без связанных полей. С остальными - сплошные глюки.
:(
Может есть какие-нибудь современные контролы для работы с БД?
Или известные причины этих глюков :?:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.08.2005 (Пн) 14:33

Все нормально делается при прямых руках.
Для связанных таблиц надо: 1) продумать связи, 2) указывать Unique Table.
Lasciate ogni speranza, voi ch'entrate.

arbusov
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 04.07.2005 (Пн) 12:43

Сообщение arbusov » 01.08.2005 (Пн) 14:40

В том то и дело, что все прописано достаточно грамотно, утверждено нашим специалистом ИТ и т.п. В самой БД работа с таблицами - не проблемма.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.08.2005 (Пн) 14:47

А почему у меня удаление джойновых таблиц из датагрида проходит нормально? :)
Наверное, потому, что в каждой таблице есть primary key?
Или потому, что непосредственно перед удалением recordset.properties("Unique table").value делается равным имени таблицы, из которой происходит удаление?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

arbusov
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 04.07.2005 (Пн) 12:43

Сообщение arbusov » 01.08.2005 (Пн) 14:56

1) primary key в каждой таблице есть
2) а вот recordset.properties("Unique table").value = ... - извиняюсь за бестактность, это перед изменением какого-либо значения тоже каждый раз прописывать? По Grid_BeforeUpdate?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.08.2005 (Пн) 15:34

А вот recordset.properties("Unique table").value влияет только на удаление.

Код: Выделить всё
Private Sub grdEquipment_BeforeDelete(Cancel As Integer)
  If MsgBox("Действительно удалить?", vbQuestion Or vbYesNo) = vbNo Then
    Cancel = True
  Else
    rstEquipment.Properties("Unique Table").Value = "EquipmentInstalled"
  End If
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

arbusov
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 04.07.2005 (Пн) 12:43

Сообщение arbusov » 02.08.2005 (Вт) 6:41

Спасибо за подробность GSerg, про "Unique Table" я вроде догнал, правда прописал в Form_Load, и удаления вроде работают четко :!: :?: (Или так нельзя?)
Правда они-то и до этого проходили, хоть и не без проблем, но с этим я справлялся: при непонятной ошибке после обновления -
Код: Выделить всё
.CancelBatch
.Requery '...

А вот при добавлени записей в некоторых таблицах происходит вставка новой строки столько раз, сколько раз после добавления Clickнеш на любые ячейки (в т.ч. той же строки!!!)...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 41

    TopList