Страница: 1 |
Хелп! Всю голову уже сломал.. :-( Вот кусок кода: 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 работают нормально (но денег просят), а этот не хочет.. :-(
пред открытием соединения попробуй сделать 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 & "ata Source=" & strServerName Слушай, я сейчас отупею совсем.. Код, который я писал, по-идее должен работать. Но даже с поправками, которые ты указал, ничего не получается. Порылся в мелкомягком, вот какой вариант предлагает он: 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=SERVERATABASE=Payments;USERID=sa;PASSWORD=xxx" ', , adOpenStatic 'TempDB.ConnectionString = "Provider=MSDATASHAPE; Data Provider=SQLOLEDB.1;Password=xxx;Persist Security Info=False;User ID=sa;Initial Catalog=Paymentsata Source=SERVER" 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 записей, но нах? Как же сделать стандартное заполнение датагрида без всяких геморроев?? Всем сорри за беспокойство. Что-то я сразу не догнал, что если закрыть рекордсет, то и грид пустым окажется.. ) Страница: 1 |
Вопрос: Не работает DataGrid!
Добавлено: 31.10.03 15:09
Автор вопроса: Scuder | ICQ: 143518458
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
ulis
ICQ: 50807612
Вопросов: 0
Ответов: 10
Профиль | | #1
Добавлено: 31.10.03 18:22
Номер ответа: 2
Автор ответа:
Scuder
ICQ: 143518458
Вопросов: 12
Ответов: 37
Профиль | | #2
Добавлено: 03.11.03 10:59
Номер ответа: 3
Автор ответа:
Scuder
ICQ: 143518458
Вопросов: 12
Ответов: 37
Профиль | | #3
Добавлено: 03.11.03 17:03