powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как создать таблицу на форме VB?
22 сообщений из 47, страница 2 из 2
Как создать таблицу на форме VB?
    #37049402
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
Dim rs As New ADODB.Recordset
Ну на такое ошибку выводит "User-defined type not defined"

ну а полный код на данный момент

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Option Explicit
Private Sub Form_Load()

Dim cn, rs, cmd, i
Set rs = CreateObject("ADODB.RecordSet")
Set cn = CreateObject("ADODB.Connection")

cn.Open "Provider=LCPI.IBProvider.3;" & _
        "Data Source=localhost:c:\1\NEKROBASE.fdb; " & _
        "User Id=SYSDBA;" & _
        "password=masterkey;" & _
        "ctype=win1251;" & _
        "auto_commit=true"

rs.CursorLocation = adUseClient
Set rs = cn.Execute("select * from GODS")
Set DataGrid1.DataSource = rs

'j = 10
'Do While Not rs.EOF
'
'  For i = 0 To 7
'   MSFlexGrid1.TextArray(j) = rs(i).Value
'   j = j + 1
'   Next i
'rs.MoveNext
'j = j + 1
'MSFlexGrid1.AddItem ""
'Loop

End Sub
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049405
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekronНу на такое ошибку выводит "User-defined type not defined"
Ну так правильно выводит - надо подключить библиотеку ADO
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049411
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во теперь работает Датагрид, спасибо. Гораздо удобей чем для флекса цикл писать. )
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049485
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хмм, еще вопрос появился. Я так понял DataGrid-ы постоянно обновляются в зависимости от текущей информации в рекордсете? Так значит для других таблиц нужно создавать другие рекордсеты? или есть другое решение с одним рекордсетом? К томуже после создания более одного рекордсета они перестали работать. Если имеет значение то таблицы расположены на SSTab-е как вы посоветовали.
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049493
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekronТак значит для других таблиц нужно создавать другие рекордсеты?
После того, как ты присвоил свойству Recordset грида текущий рекордсет - можешь его закрыть и создать в этой же переменной другой рекордсет. Тот останется в гриде, пока не уничтожишь или не закроешь форму.
NekronК томуже после создания более одного рекордсета они перестали работать. надо выпрямить руки или код. Кода не вижу, рук тоже.
NekronЕсли имеет значение то таблицы расположены на SSTab-е как вы посоветовали.Не имеет. SSTab фактически контейнер для контролов, который управляет только их видимостью.


ЗЫ: называй грид гридом, а не таблицей, а то путаница будет с таблицей БД
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049506
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эмм ну вот так сделал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Option Explicit

Private Sub Form_Load()

Dim cmd, i
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Open "Provider=LCPI.IBProvider.3;" & _
        "Data Source=localhost:c:\1\NEKROBASE.fdb; " & _
        "User Id=SYSDBA;" & _
        "password=masterkey;" & _
        "ctype=win1251;" & _
        "auto_commit=true"

rs.CursorLocation = adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic

rs.Open "select * from GODS", cn
Set DataGrid1.DataSource = rs
rs.Close
rs.Open "select * from POST", cn
Set DataGrid2.DataSource = rs
В результате во 2ом гриде нужные данные, а первый пустой. Еслиже убрать эту часть

Код: plaintext
1.
2.
rs.Close
rs.Open "select * from POST", cn
Set DataGrid2.DataSource = rs
то в первом гриде нужные данные есть, ну а после добавления rs.Close он пустой.

А дополнительные рекордсеты я разобрался почему мешали работать я делал так
Код: plaintext
Dim rs,rs1 As New ADODB.Recordset
А нужно было так
Код: plaintext
Dim rs As New ADODB.Recordset,rs1 As New ADODB.Recordset
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049512
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вместо
Код: plaintext
rs.Close

в данном случае надо
Код: plaintext
Set rs.Nothing
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049513
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proв данном случае надо
Код: plaintext
Set rs.Nothing

ой
Код: plaintext
Set rs = Nothing
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049524
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, можно вообще обойтись без rs
достаточно сделать так:
Код: plaintext
DataGrid1.DataSource.Open "select * from GODS", cn,  adOpenDynamic, adLockOptimistic
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049529
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, выглядит проще, но
Код: plaintext
.Open
Ошибка "Method or data member not found"
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049539
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekronСпасибо, выглядит проще, но
Код: plaintext
.Open
Ошибка "Method or data member not found"
Гм, я думал, DataSource это и есть Recordset, ща покопался - ан нет

Через Nothing работает?
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049543
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да через него нормально, спасибо ).
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049550
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ооо я смотрю если изменять данные в гриде, то оно само передает изменения в базу и комитит ) намного упрощает мою работу, не нужно создавать всякие кнопки особо по апдейту. А не подскажете сразу есть-ли команды создания и удаления новых строк в гриде? Или это уже только командами в БД передавать отдельно?
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049556
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekronОоо я смотрю если изменять данные в гриде, то оно само передает изменения в базу и комитит ) намного упрощает мою работу, не нужно создавать всякие кнопки особо по апдейту. А не подскажете сразу есть-ли команды создания и удаления новых строк в гриде? Или это уже только командами в БД передавать отдельно?

Через рекордсет. .AddNew, .Delete

Наверное прокатит и через DataGrid1.DataSource.AddNew, если не прокатит, придется оставлять rs не закрывая и наплодить их для каждого грида.

При изменении рекордсета возможно датагриду потребуется рефреш
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049567
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
DataGrid1.DataSource.AddNew
Увы не пашет ( .AddNew .Delete таже ошибка что и при .Open
ну а через рекорд нормально.
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049576
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А нашел способ проще, у грида есть свойство такое даже AllowDelete ,AllowInsert и AllowUpdate. Просто поставить где надо True где не надо False.
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049581
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekronА нашел способ проще, у грида есть свойство такое даже AllowDelete ,AllowInsert и AllowUpdate. Просто поставить где надо True где не надо False.Так то ж разрешение ПОЛЬЗОВАТЕЛЮ это делать. А ты спрашивал
Nekronесть-ли команды создания и удаления новых строк в гриде?
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049595
Nekron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А извините ошибся, и напоследок можете подсказать будетли работать exe файл под виндовс без установленных компонентов для VB и под линуксом?
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049600
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не будет * 2
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049604
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее так - виртуальная машина VB есть в виндах, начиная с XP, ADO тоже, а вот всяких контролов может не оказаться
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37049614
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю насчет добавления обновления и удаления записей
Так вот не забывай, что если БД многопользовательская и нужно видеть обновления остальных юзеров, а и иногда и свои (если в запросе имеются вычисляемые поля), то нужно пересоздавать рекордсет его можно либо закрыть и заново открыть либо использовать свойство рекордсета Requery
Так вот добавление или удаления записей в БД, Я, например, делаю ч/з SQL запрос (хотя иногда можно и rs.Add u rs.Del):
Код: plaintext
1.
2.
SQL=”INSERT……….”
cn.Execute SQL
rs. Requery 
Обновление рекордсета можно делать ещё так:
где у Тебя идет процедура создания, и присвоение гриду рекордсета в событии Load, вынеси эту процедуру в отдельную функцию её можно даже сделать параметрической и вызывай себе в любой момент.
Рекордсет объяви в модуле или хотя бы на уровне формы (т.е. сделай его public-не забывай закрывать рекордсет при выгрузке)
...
Рейтинг: 0 / 0
Как создать таблицу на форме VB?
    #37083851
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekronА не подскажете сразу есть-ли команды создания и удаления новых строк в гриде ? Или это уже только командами в БД передавать отдельно?
При использовании ClientCursor - эти запросы генерируются сервисными компонентами. Хотя я вот смотрю в документацию по ADODB 2.8 - у Recordset есть свойства InsertCommand/UpdateCommand/DeleteCommand, через которые эти запросы можно настраивать.

При использовании ServerCursor, IBProvider сам сгенерирует запросы для добавления/удаления/обновления.

Однако вы можете задать их явно через свойства ADODB.Command/ADODB.Recordset - insert_sql , delete_sql , update_sql . Пример можно посмотреть здесь

До версии IBProvider 3.5, автоматическая генерация запросов для обновления поддерживается только для запроса "select * from my_table". Начиная с 3.5 - запросы могут содержать WHERE/PLAN/ORDER BY/FOR UPDATE/ROWS и списки конкрентных колонок. Главное, чтобы результирующее множество содержало колонки первичного ключа таблицы.

Если у вас возникнут дополнительные вопросы по поводу провайдера - пишите на форум IBProvider-а или на e-mail поддержки.
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как создать таблицу на форме VB?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]