Таблицы БД и т.д.

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Кабал
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.04.2004 (Пн) 14:07

Таблицы БД и т.д.

Сообщение Кабал » 05.04.2004 (Пн) 14:10

Подскажите плз. :(
У меня проблема такая. Я программно создаю базу и таблицы к ней (w2000, vb6(sp5))
. В таблицах 5 полей.
Когда я пытаюсь записть данные в таблицу и перейти на другую запись он говорит no carrent record.
Может были подобные случаи?
Спасибо.
Дмитрий

dimalib
Обычный пользователь
Обычный пользователь
 
Сообщения: 58
Зарегистрирован: 08.12.2003 (Пн) 8:03

Сообщение dimalib » 05.04.2004 (Пн) 14:24

ты код сюда кинь где ошибку выдает :shock:

Кабал
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.04.2004 (Пн) 14:07

ОК

Сообщение Кабал » 05.04.2004 (Пн) 15:43

Ошибку выдает здесь:
Data1.Recordset.AddNew
Command1.Enabled = True
new_ans.Enabled = False
Но все по порядку наверно.
Вот создается база:
Dim NewDB As Database
Dim NewWs As Workspace
Dim strDBPath As String
strDBPath = "C:\Quest\db1.mdb"
Set NewWs = DBEngine.Workspaces(0)
On Error Resume Next
Set NewDB = NewWs.CreateDatabase(strDBPath, dbLangCyrillic)
Вот создается таблица с полями
Dim Name As String
Dim Nt As TableDef
Name = Combo1.Text
Data1.Refresh
Set Nt = Data1.Database.CreateTableDef(Name)
With Nt
.Fields.Append .CreateField("Quest", dbMemo, 255)
.Fields.Append .CreateField("ans1", dbText, 100)
.Fields.Append .CreateField("ans2", dbText, 100)
.Fields.Append .CreateField("ans3", dbText, 100)
.Fields.Append .CreateField("ans4", dbText, 100)
.Fields.Append .CreateField("ver", dbInteger, 1)
On Error GoTo fig
Data1.Database.TableDefs.Append Nt
End With
Combo1.AddItem (Name)
fig:
А вот это код формы и т.д. Ошибка при перемещении по записям (data)
Private Sub Combo1_Click()
new_ans.Enabled = True
Dim Name As String
Name = Combo1.Text
Data1.DatabaseName = "C:/Quest/db1.mdb"
Data1.RecordSource = Name
Data1.Refresh
Text1.DataField = Quest
Text3(0).DataField = ans1
Text3(1).DataField = ans2
Text3(2).DataField = ans3
Text3(3).DataField = ans4
Verot.DataField = ver
End Sub
здесь он обновляет (наверно) молча
Private Sub Command1_Click()
On Error Resume Next
Data1.Recordset.Update
'Text1.Text = Empty
'Text3(0).Text = Empty
'Text3(1).Text = Empty
'Text3(2).Text = Empty
'Text3(3).Text = Empty
'Verot.Text = Empty
Command1.Enabled = False
new_ans.Enabled = True
End Sub

Private Sub esc_Click()
Form3.Hide
End Sub

Private Sub Form_Load()
Command1.Enabled = False
new_ans.Enabled = True
Dim I As Integer
Dim E As Integer
Data1.DatabaseName = "C:/Quest/db1.mdb"
Data1.Refresh
E = Data1.Database.TableDefs.Count - 1
For I = 4 To E Step 1
Combo1.AddItem Data1.Database.TableDefs(I).Name
Next I
End Sub
здесь молча дает нажать кнопку, но текстовые поля не очищаются
Private Sub new_ans_Click()
Data1.Recordset.AddNew
Command1.Enabled = True
new_ans.Enabled = False
End Sub
Когда нажимаю на переход на элементе data1, он и говорит no corrent record :(

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 06.04.2004 (Вт) 10:49

У тебя таблица еще пустая. Такая ошибка была описана.
Дело в том, что у тебя текстбоксы связаны и когда ты жмешь на следующую запись, data пытается АВТОМАТОМ обновить текущую запись. А ее нет. Вот и ошибка.

Попробуй вот что:
1) задизейбли свои текстовые поля
2) на Command1_Click перед AddNew заинейбли их.

И, соотвественно, Update можно не делать - при следующем AddNew или при переходе на следующую запись у тебя данные попадут в таблицу.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Кабал
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.04.2004 (Пн) 14:07

ТАК?

Сообщение Кабал » 06.04.2004 (Вт) 12:31

То есть, в самом начале при загрузке формы:
Text1.Enabled = False
Text3(0).Enabled = False
Text3(1).Enabled = False
Text3(2).Enabled = False
Text3(3).Enabled = False
Verot.Enabled = False
Потом при нажатии на addnew:
Text1.Enabled = True
Text3(0).Enabled = True
Text3(1).Enabled = True
Text3(2).Enabled = True
Text3(3).Enabled = True
Verot.Enabled = True
Теперь не ругается, но и новых записей нет.
Так? Или я туплю? :(


Вернуться в Базы данных

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList