Страница: 1 |
Вопрос: Не работает DataGrid! | Добавлено: 31.10.03 15:09 |
Автор вопроса: ![]() |
Хелп! Всю голову уже сломал.. :-( Вот кусок кода: Dim TempRS As New ADODB.Recordset Dim TempDB As New ADODB.Connection Private Sub Form_Load() TempDB.Open "DRIVER={SQL Server};SERVER=SERVER;DATABASE=Payments;USERID=DBO;PASSWORD=PWD" TempRS.Open "Select * FROM Payments", TempDB, adOpenStatic, adLockReadOnly Set Me.DataGrid1.DataSource = TempRS Me.DataGrid1.Refresh Me.DataGrid1.ReBind TempRS.Close TempDB.Close Set TempRS = Nothing End Sub Всё работает, но стандартный майкрософтовский DataGrid не заполняется! Платные гриды типа GRIDEX 2000 работают нормально (но денег просят), а этот не хочет.. :-( |
Ответы | Всего ответов: 3 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 50807612 Вопросов: 0 Ответов: 10 |
Профиль | Цитата | #1 | Добавлено: 31.10.03 18:22 |
пред открытием соединения попробуй сделать TempDB.CursorLocation = adUseClient Me.DataGrid1.Refresh Me.DataGrid1.ReBind - эти две строки не обязательны А почему ты не пользуешься "стандартной" строкой подключения к mssql серверу? strC = "Provider=MSDATASHAPE; Data Provider=SQLOLEDB.1;Password=" & strPassword & ";Persist Security Info=False;User ID=" & strUserName & ";Initial Catalog=" & strBaseName & "
|
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 143518458 Вопросов: 12 Ответов: 37 |
Профиль | Цитата | #2 | Добавлено: 03.11.03 10:59 |
Слушай, я сейчас отупею совсем.. Код, который я писал, по-идее должен работать. Но даже с поправками, которые ты указал, ничего не получается. Порылся в мелкомягком, вот какой вариант предлагает он: Dim TempRS As New ADODB.Recordset Dim TempDB As New ADODB.Connection Private subRst As ADODB.Recordset Const PAGE_SIZE = 13 Private Function GetRstPage(recset As ADODB.Recordset) As ADODB.Recordset Dim x As Long Dim fld As Field Dim origPage As Long origPage = IIf(recset.AbsolutePage > 0, recset.AbsolutePage, 1) With subRst If .State = adStateOpen Then .Close 'Create Fields For Each fld In recset.Fields .Fields.Append fld.Name, fld.Type, fld.DefinedSize, fld.Attributes Next fld
'Add Records .Open For x = 1 To PAGE_SIZE If recset.EOF Then Exit For .AddNew For Each fld In recset.Fields subRst(fld.Name) = fld.Value Next fld .Update recset.MoveNext Next x .MoveFirst recset.AbsolutePage = origPage End With Set GetRstPage = subRst End Function Private Sub Form_Load() Dim sql As String Set subRst = New ADODB.Recordset TempDB.ConnectionString = "DRIVER={SQL Server};SERVER=SERVER 'TempDB.ConnectionString = "Provider=MSDATASHAPE; Data Provider=SQLOLEDB.1;Password=xxx;Persist Security Info=False;User ID=sa;Initial Catalog=Payments TempDB.Open 4 sql = "Select * FROM Payments" With TempRS .CursorLocation = adUseClient .PageSize = PAGE_SIZE .Properties("Initial Fetch Size") = PAGE_SIZE .Open sql, TempDB, adOpenKeyset, , adAsyncFetchNonBlocking Set DataGrid1.DataSource = GetRstPage(TempRS) End With TempRS.Close TempDB.Close Set TempRS = Nothing End Sub То есть не тупо сунуть гриду рекордсет, а с какими-то заморочками.. Я пока не могу разобраться в смысле функции, точнее смысл-то понятен - разбить грид на страницы по 13 записей, но нах? Как же сделать стандартное заполнение датагрида без всяких геморроев?? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 143518458 Вопросов: 12 Ответов: 37 |
Профиль | Цитата | #3 | Добавлено: 03.11.03 17:03 |
Всем сорри за беспокойство. Что-то я сразу не догнал, что если закрыть рекордсет, то и грид пустым окажется.. |
Страница: 1 |
|