FlexGrid и вообще гриды в Access

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

FlexGrid и вообще гриды в Access

Сообщение IVAN008 » 10.03.2005 (Чт) 10:42

Полазил по форуму, но к сожалению ничего не нашел. Нужно приблизительно следующее: Как использовать Флекс или просто Датагрид в формах Акцесс? Когда его вставляешь в форму то не могу в него засунуть данные и не могу вводить в грид данные для выведения в таблицу. Может вопрос и детский но я не смог найти на него ответ, буду благодарен за помощь.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 10.03.2005 (Чт) 12:02

MSFLEXGRID заполняется ручками
MSHFLEXGRID заполняется из ADODB.Recordset, если его указать в качестве источника данных

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 10.03.2005 (Чт) 12:15

Насчет заполнения ручками - Можно поподробнее??
Как получить доступ к ячейке, как потом это, что ввел импортировать в базу. И вообще если у кого есть ссылочка на хороший хелп.... плиз.

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Re: FlexGrid и вообще гриды в Access

Сообщение snov » 10.03.2005 (Чт) 12:17

IVAN008 писал(а):Полазил по форуму, но к сожалению ничего не нашел. Нужно приблизительно следующее: Как использовать Флекс или просто Датагрид в формах Акцесс? Когда его вставляешь в форму то не могу в него засунуть данные и не могу вводить в грид данные для выведения в таблицу. Может вопрос и детский но я не смог найти на него ответ, буду благодарен за помощь.
Попробуй через свойство ControlSource

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 10.03.2005 (Чт) 12:19

IVAN008 писал(а):Насчет заполнения ручками - Можно поподробнее??
Как получить доступ к ячейке, как потом это, что ввел импортировать в базу. И вообще если у кого есть ссылочка на хороший хелп.... плиз.
Доступ к ячейке через свойство TextMatrix.

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 10.03.2005 (Чт) 12:43

2snov Спасибо за советы, но к сожалению не мой уровень :-) в смысле круче. Я конечно попробую постучать головой об стену, точнее о компьютер, но если есть .. ссылку на статью или еще чего для полных ламеров. :-)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 10.03.2005 (Чт) 13:04

Кстати, Janus GridEx 2000 (http://www.janusys.com) - самый похожий на Access-овский из Grid-ов, если присмотреться. Они, похоже, на Access поглядывали когда его делали. Соответственно довольно неплохо "ложится" и в сам Access (как Access со сторонними контролами работает мне вообще крайне не нравится ).

Хотя, IMHO, если что-то делать на Access, то лучше пользовать только его родные компоненты.

P.S А пользовать Grid-ы идущие в комплекте с VB - это мазохизм, вообще-то...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 23.03.2005 (Ср) 16:06

Пиши, что-то типа этого: :)

Код: Выделить всё
    Dim s as String
    s= "123" & vbTab & "456"
    MSFlexGrid1.AddItem s


vbTab символ перескакивает в следующий столбец, таким образом, если тебе надо записать строку из таблицы БД, то берешь тот же Recordset и его поля через vbTab склеиваешь в строку и в Additem, медлленно правда все это.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 23.03.2005 (Ср) 16:50

Одним махом:

Код: Выделить всё
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "SELECT ClientID, Title, Login from Clients", ConnString, adOpenStatic, adLockReadOnly, adCmdText

    s = rs.GetString(adClipString, -1, vbTab, vbCr, "")

    With Me.MSFlexGrid1
        .Redraw = False
        .Clear
        .Rows = rs.RecordCount + 1
        .Cols = rs.Fields.Count + 1
        .FixedCols = 1
        .FixedRows = 1
       
        .ColWidth(0) = 300
        .TextMatrix(0, 1) = "ClientID"
        .TextMatrix(0, 2) = "Title"
        .TextMatrix(0, 3) = "Login"
       
       
        .ColSel = Me.MSFlexGrid1.Cols - 1
        .RowSel = Me.MSFlexGrid1.Rows - 1
     
    'Debug.Print s
   
        .Clip = s
       
        .ColSel = 0
        .RowSel = 0
        .Col = 1
        .Row = 1
        .AllowUserResizing = flexResizeColumns
        .Redraw = True
    End With

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 26.03.2005 (Сб) 0:11

Доброго времени суток уважаемые!
Никто не подскажет, можно ли ручками заполнить DataGrid или DBGrid, не прибегая к DataSet? В MSDN написано, что нельзя. Но не успокоюсь пока.
А еще, нужно скрыть столбцы с идентификаторами от глаз пользователя в MSFlex, наподобие того, как это делается в DbGrid.
http://bbs.vbstreets.ru/viewtopic.php?p=106816#106816.
Andrey Fedorov, подскажи, как называется Access - овская библиотека. Может она подойдет мне?
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 26.03.2005 (Сб) 0:25

Konst_One
Код: Выделить всё
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "SELECT ClientID, Title, Login from Clients", ConnString, adOpenStatic, adLockReadOnly, adCmdText


Объясни, чем отличается клиентский курсор, в твоем случае от серверного. Клиентский занимает больше ресурсов?
Код: Выделить всё
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim sql As String
sql = "select TELEPHONE,NAME,REGION,STREET,BUILDING,BLOCK,FLAT,ElID from ElPhones Order by TELEPHONE"
Set cn = New ADODB.Connection
cn.Open = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & sAppPath & "ZapKniga.mdb;"
Set rs = cn.Execute(sgl)
Do Until rs.EOF
'...
Заполняем сетку
'...
rs.NextRecordset
Wend
rs.Close
Set rs = Nothing
Set cn = Nothing


http://bbs.vbstreets.ru/viewtopic.php?t=14532

В чем принципиальная разница?
С уважением, Сергей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.03.2005 (Сб) 11:39

клиентский курсор физически открывается на клиентском компьютере , т.е. все данные фетчатся сразу на клиента

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

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.03.2005 (Сб) 11:44

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

Код: Выделить всё
Dim rs as ADODB.Recordset

Set rs=New ADODB.Recordset
rs.Fields.Append "ID", adInteger
rs.Fields.Append "Desc", adVarchar,100

rs.Open
rs.AddNew
rs!ID=1
rs!Desc="Test 1"
rs.Update

Set DBGRID1.DataSource=rs

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 26.03.2005 (Сб) 16:41

Konst_One
Если я правильно понимаю, независимо от того, хотим мы передить 1 строку с БД сервера из 100 000, все равно, в случае клиентского курсора, передадутся все 100 000 Клиенту. Другое дело, как мы все енто хозяйство отобразим - частично или целиком. ==> трафик и машина грузится по полной схеме. Это так?

Andrey Fedorov
Подскажи, как называется библиотека акцессовского грида, хочу поюзать ее в VB6. И еще, где найти нормальную библиотеку (не демку) грида "Janus GridEx 2000" или лекарство. Выложи в топик плиз.

Я нашел VSFlexGrid фирмы Video Soft. Теперь со стандартными VB гридами работать не тянет. Взять можно здесь:
http://bbs.vbstreets.ru/viewtopic.php?p=106816#106816
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 26.03.2005 (Сб) 16:45

Konst_One
Спасибо. До такого не додумался. Но, что-то сдается, что не лучший вариант. Но все равно спасибо. Попробую.
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 28.03.2005 (Пн) 7:59

sergey-911 писал(а):Подскажи, как называется библиотека акцессовского грида, хочу поюзать ее в VB6. И еще, где найти нормальную библиотеку (не демку) грида "Janus GridEx 2000" или лекарство. Выложи в топик плиз.


Не - выкладывать купленный компонент я не могу.
Можешь поискать его на CD, которые продаются... Ну знаешь где.
Называется Janus GridEx 2000.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 28.03.2005 (Пн) 20:28

Andrey Fedorov
Жаль, а на маил stggey-911@mail.ru
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 28.03.2005 (Пн) 20:31

Andrey Fedorov
Блин, ошибся sergey-911@mail.ru
Так правильно! :D
С уважением, Сергей.

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 30.03.2005 (Ср) 13:53

Ничё сибе :-))
Сколько сообчений на давно заданный вопрос :-) я давно уже не заглядывал а тут вона-чего:-)
Вообще я думаю что тема достаточно важная может ее следует рассмотреть кому нибудь из Гуру более подробно и обстоятельно?
У меня во возникла такая еще проблемка - Юзвер не хочет заполнять данные по строкам, как это делается в Акцесс, а он Ж..А привык, заполнять по столбцам, как в Эксель, и просит меня чтобы в его жизни ничего не изменилось сделать в Акцесс то же самое, что и в Экселе. Я конечно его уже давно послал и заставил вводить данные как положено, но сама проблемка меня возбудила :-) хожу вот и думаю, а что неужели и правда не смогу сделать???

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 31.03.2005 (Чт) 22:46

Я конечно его уже давно послал и заставил вводить данные как положено, но сама проблемка меня возбудила хожу вот и думаю, а что неужели и правда не смогу сделать???

Странный повод для возбуждения!
Я бы просто дал Юзверу заполнить грид, отключенный от БД (статический), а когда форма закрывалась бы, предварительно сохранил результат в БД.
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.04.2005 (Пт) 7:29

sergey-911 писал(а):
Я бы просто дал Юзверу заполнить грид, отключенный от БД (статический), а когда форма закрывалась бы, предварительно сохранил результат в БД.


Это можно, но в таких случаях сложней обрабатывать и выводить сообщения об ошибках ввода, особенно когда они в нескольких строках. Но зачастую приходится так делать - чтобы было удобней юзеру.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение alibek » 01.04.2005 (Пт) 7:39

IVAN008 писал(а):У меня во возникла такая еще проблемка - Юзвер не хочет заполнять данные по строкам, как это делается в Акцесс, а он Ж..А привык, заполнять по столбцам, как в Эксель, и просит меня чтобы в его жизни ничего не изменилось сделать в Акцесс то же самое, что и в Экселе. Я конечно его уже давно послал и заставил вводить данные как положено, но сама проблемка меня возбудила :-) хожу вот и думаю, а что неужели и правда не смогу сделать???

Это проблема юзера.
Если так хочется заполнять, как в Excel, пусть и заполняет в Excel, а ты переноси данные в БД.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.04.2005 (Пт) 7:56

[quote="alibekЭто проблема юзера.
Если так хочется заполнять, как в Excel, пусть и заполняет в Excel, а ты переноси данные в БД.[/quote]

Тогда прблема юзера перерастет в проблему программиста.

И главное - у него юзер не хочет заполнять в Excel, он хочет заполнять как в Excel. То есть, к примеру, заполняя сначала первый столбец вертикально, а потом остальные - бывают формы где так удобно (или просто привычно). Данные в таблицу базы так не введешь - ведь в ней часть полей объявлены обязательными, а заполнено только одно... Вот и приходится заполнять таблицу на клиенте, при нажатии кнопки Сохранить делать все возможные проверки правильности ввода и только потом сохранять все введенные записи...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение alibek » 01.04.2005 (Пт) 8:22

Andrey Fedorov писал(а):И главное - у него юзер не хочет заполнять в Excel, он хочет заполнять как в Excel. То есть, к примеру, заполняя сначала первый столбец вертикально, а потом остальные - бывают формы где так удобно (или просто привычно). Данные в таблицу базы так не введешь - ведь в ней часть полей объявлены обязательными, а заполнено только одно... Вот и приходится заполнять таблицу на клиенте, при нажатии кнопки Сохранить делать все возможные проверки правильности ввода и только потом сохранять все введенные записи...

Формы, где часть столбцов заполняется вертикально, а часть - горизонтально, конечно бывают. Но думаю, ты согласишься, что вертикальные столбцы - это те столбцы, которые заполняются либо одинаковыми значениями, либо значениями, подчиняющимися определенному алгоритму. Так что можно просто сделать автозаполнение для этих столбцов, оставив заполнение по горизонтали.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение alibek » 01.04.2005 (Пт) 8:24

P.S. Есть случаи, когда форма специально заполняется по столбцам, т.к. в этом случае подряд вводятся данные одного типа (числа, строки, даты, денежные суммы), но в этом случае тут нужен не grid, а именно worksheet.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.04.2005 (Пт) 10:05

alibek писал(а):P.S. Есть случаи, когда форма специально заполняется по столбцам, т.к. в этом случае подряд вводятся данные одного типа (числа, строки, даты, денежные суммы), но в этом случае тут нужен не grid, а именно worksheet.


Тот-же Grid. Делал подобные, в том числе и когда при вводе значения в одно поле производится пересчет значений в других полях, в том числе и в других записях - на Grid-e все это нормально реализуется.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


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

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

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

    TopList