Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > VB6 и Базы Данных


Автор: Jew 27.1.2003, 04:35
У меня небольшая проблема: Есть формочки на VB6 и БД на ACCECC, не могу связать данные из БД и текстовым полем на форме. Знаю что можно через DAOGrid, но мне нужна каждая запись отдельно. Подскажите кодом или ссылочкой на исходники.
Спасибо всем, кто ответил.

Автор: cardinal 27.1.2003, 08:30
Исходник обрезан снизу и сверху, но принцип работы объясняет
Код

Public mdb As dao.Database               'база данных
' тут куска не хватает, но он так коряво написан, что просто стыдно  :)
On Error Resume Next
Dim pwd As String
Text1.Text = "cardinal"
pwd = Text1.Text
strConnect = ";database=" & App.Path & "\db23.mdb" & ";PWD=" & pwd & ""  ' окрыть БД с паролем
Set mdb = OpenDatabase("", True, False, strConnect)
Dim rs2 As Recordset
Set rs2 = mdb.OpenRecordset("SELECT sPrice, SkladQty FROM Menu WHERE Name='" & DBCombo2.BoundText & "'")
Text2.Text = Format(rs2!sPrice, "###0.00"" руб.")
Text3.Text = rs2!SkladQty
rs2.Close
mdb.Close

Вот так примерно, но исходник такой старый, что я уже все подзабыл. Но в принципе базу открыть и свойство TextBox`а ты теперь должен быть в состоянии изменить. Возможны опечатки, если что не работает пиши. Успехов!

Автор: Jew 28.1.2003, 05:28
Большое спасибо! Срисую, попробую и напишу! Buy

Автор: Jew 2.2.2003, 04:54
чТО-то не хотит работать. Может проблема во мне? smile.gif)
Ну пробовал и так и сяк не выходит каменый цветок.
так как я только начинаю програмить, может чуть-чуть подробнее расскажешь чего делать надо, ну в смысле, что использовать ADOdc надо я правильно понял, а может быть еще что-то?...
Напиши если не трудно....

Автор: cardinal 3.2.2003, 08:51
Цитата
что использовать ADOdc надо я правильно понял

А кто сказал, что надо Adodc использовать? Adodc посовременней, и открывает кучу возможностей для работы с сетями, интернетом и все такое... Я в начале ни хрена не понял как в системе ADO работать, а DAO пошло как по маслу, а потом оказалось, что все что я хотел сделать можно сделать и с DAO - поэтому больше о ADO сказать и не могу.
Цитата
может чуть-чуть подробнее расскажешь чего делать надо

Делать надо следующее: читать книжки. Когда я пару годиков назад начинал, я ни хрена не понимал. Но просидев перед компером пару недель (примерно по 8 часов в день) и начитавшись умных книжек я начал потихонечку во всем разбираться. Книги советую не чисто про базы данных, хотя тоже не помешает, а вообще "про VB/VBA" причем VBA лучше на потом оставить. Думаю: надо иметь ни меньше трех книжек (еще раз говорю что они немного разные должны быть, например справочник по процедурам встроенным, что нибудь про БД и что нибудь о VB). Еще советую толстые книжке (начиная с 500 страниц) - они умнее smile.gif.

Автор: Jew 4.2.2003, 05:38
Большое всем спасибо, пошел читать книжки (а вдруг поможет) smile.gif

Автор: Stinger 19.2.2003, 08:35
Помогите, пожалуста!!! Я не могу открыть в VB6 азу данных на Access для чтения (пишу через DAO). Читать я ее читаю, а данные внести не могу. Он говорит:"База данных открыта только для чтения"

Автор: Stinger 19.2.2003, 09:03
Цитата(Stinger @ 19.2.2003, 00:35)
Помогите, пожалуста!!! Я не могу открыть в VB6 базу данных на Access для записи (пишу через DAO). Читать я ее читаю, а данные внести не могу. Он говорит:"База данных открыта только для чтения"

Большое спасибо всем, кто ответил!!!!!!! hehe.gif

Автор: cardinal 19.2.2003, 09:53
Так вроде чуть выше все написано - и как открыть и как вписать. Может ты паралельно в MS Access сидишь и поэтому она у тебя только для чтения открывается smile.gif
p.s. кидай код на форум - разберемся thumbs-up.gif

Автор: Stinger 19.2.2003, 22:30
Да нет. Только VB6 и Access. Если надо, я могу дать свой код, где я подключаю БД.

Автор: Stinger 19.2.2003, 22:37
cool.gif Sorry!!! Ошибочка. Только VB6. Без Access'а. Я пытаюсь добавлять через AddNew. А он ругается. rolleyes.gif

Автор: Stinger 19.2.2003, 22:42
Цитата(Stinger @ 19.2.2003, 14:37)
cool.gif Sorry!!! Ошибочка. Только VB6. Без Access'а. Я пытаюсь добавлять через AddNew. А он ругается. rolleyes.gif

[CODE]Option Explicit
Dim dbMedic As Database
Dim rsPerson As Recordset
Dim sSQL As String

Private Sub Command1_Click()
rsPerson.AddNew
rsPerson!LName = "Ivan"

rsPerson.Update

End Sub

Private Sub Form_Load()
Dim sDBLocation As String
sDBLocation = "C:\Base\base.mdb"
Set dbMedic = OpenDatabase(sDBLocation)
'dbMedic = OpenDatabase(sDBLocation, True, False, True)
sSQL = "Select * FROM Person, Income, Adress WHERE Person.ID_Card=Income.PersonID and Person.ID_Card=Adress.PersonID"
Set rsPerson = dbMedic.OpenRecordset(sSQL, dbOpenDynaset)
'rsPerson.MoveFirst
End Sub

Автор: cardinal 21.2.2003, 08:37
Код
sSQL = "Select * FROM Person, Income, Adress WHERE Person.ID_Card=Income.PersonID and Person.ID_Card=Adress.PersonID"


Ну я очень сомневаюсь, что SQL запросы такое позволяют делать, хотя кто его знает - давно этим не занимался. А вообще VB/VBA тут не причем, тебе вот сюда:

http://forum.vingrad.ru/index.php?act=ST&f=12&t=5638

p.s. ну и как обычно советую купить книгу потолще smile.gif

Автор: Stinger 21.2.2003, 19:43
Тут дело не в SQL запросе. Результат одинаковый что с ним, что без него. Когда он доходит до rs.AddNew начинает ругаться, что база данных открыта только для чтения. smile.gif

Автор: Andrey 24.2.2003, 14:05
Попробуй проверить свойства файла базы данных, возможно стоит галочка
только для чтения

Автор: cardinal 25.2.2003, 00:08
Цитата
Тут дело не в SQL запросе. Результат одинаковый что с ним, что без него. Когда он доходит до rs.AddNew начинает ругаться, что база данных открыта только для чтения.


Ну как это дело не в SQL запросе - вот это работает?

Код
Private Sub Command1_Click()
Dim sSQL As String
Dim dbMedic As DAO.Database
Dim rsperson As Recordset
sSQL = ";database=" & App.Path & "\base.mdb"  'окрыть БД
Set dbMedic = OpenDatabase("", True, False, sSQL)
Set rsperson = dbMedic.OpenRecordset("Person")
rsperson.AddNew
rsperson!LName = "Ivan"
rsperson.Update
End Sub


Цитата
Попробуй проверить свойства файла базы данных, возможно стоит галочка
только для чтения


Это первое, что было сделано wink.gif

Автор: Guest_Stinger 25.2.2003, 07:30
Я уже проверял, нет галочки.

Автор: Unregistered 25.2.2003, 07:31
Да, SQL запрос работает. Он ругается, когда доходит до AddNew

Автор: Stinger 25.2.2003, 07:45
Спасибо!!!!!!! Код работает и все добавляет.

Автор: Guest_Wan_s 28.3.2003, 20:19
вот те живой пример. писал пару недель назад. у меня фурычит все.

Private Sub пДетали_AfterUpdate()
Dim Db As Database
Dim RsVP As Recordset
Dim strSQLWhere As String
Set Db = OpenDataBase("c:\Bases\Технологические нормы.mdb")
If Me.пДетали <> "" Then
strD = Me.пДетали
strSQLWhere = "Where [Деталь] = """ & (strD) & """"
RsVP.Open "Select [Деталь], [Время плановое2] From [Технологические нормы]" & _
strSQLWhere, Db, adOpenDynamic, adLockOptimistic
Me.пНормаВр = RsVP.Fields("Время плановое2")
RsVP.Close
Else
End If
End Sub

Автор: Guest_Wan_s 28.3.2003, 20:23
вот те живой пример. писал пару недель назад. у меня фурычит все.

Private Sub пДетали_AfterUpdate()
Dim Db As Database
Dim RsVP As Recordset
Dim strSQLWhere As String
Dim strD As String
Set Db = OpenDataBase("c:\Bases\Технологические нормы.mdb")
If Me.пДетали <> "" Then
strD = Me.пДетали
strSQLWhere = "Where [Деталь] = """ & (strD) & """"
RsVP.Open "Select [Деталь], [Время плановое2] From [Технологические нормы]" & _
strSQLWhere, Db, adOpenDynamic, adLockOptimistic
Me.пНормаВр = RsVP.Fields("Время плановое2")
RsVP.Close
Else
End If
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)