2009-05-25 2 views
1

Я Извлечение данных из базы данных в записи установить с помощью VB6 ... так при получении данных с помощью Select в SQL я добавил колонку под названием Комментарии по остроумию это так, что в recordset, все столбцы таблицы + столбец «Комментарии» будет присутствовать ... Я не хочу (а также Я не могу) обновлять любое содержимое в базе данных, поскольку я только «получаю» данные в базе данных теперь ...Recordset в VB6.0

Теперь, когда я передаю выбранные данные для проверки, я хочу заполнить столбец «comments» соответствующими ошибками, если конкретная строка в recordSet ошибочна) .... Когда я делаю это, я получите сообщение об ошибке «Я не авто (обновить «Колонку комментариев» ....

Теперь мой вопрос: «Как я могу решить эту проблему?» .. Я попытался воспроизвести этот набор записей и там по-прежнему заполняя колонку комментариев (в реплицированной), которая, в свою очередь, показала ту же ошибку ... Кажется, это может быть потому, что дубликат (recordSet) просто сохраняет свойства исходного ...

Может ли у any1 помочь решить эту проблему? Любые способы репликации набора записей (без наследования его свойств) ??????

+0

Колонка «Комментарии» не в базе данных ... Это один я вручную добавил (с помощью выбора sttment), чтобы показать ошибки (для ошибочных записей в recrdset) .... –

+0

Могли вы отправляете бит кода, который извлекает набор записей, и тот, где вы получаете ошибку авторизации? – Andomar

ответ

1

Не совсем то, что вы ищете, но это, как я это делаю:

  1. Создать класс для инкапсуляции записей («Клиент» класс для «клиента» таблицы)
  2. Добавить свой комментарий свойство для класса, а не набор записей
  3. Добавьте метод подтверждения в свой класс. Было ли это записать на свой комментарий собственность (я использую Ошибки Collection)
  4. Читать записи
  5. Разобрать его в «новый клиент»
  6. Validate
  7. Проверьте свойство Комментария (или Коллекцию Ошибки)
+0

i don thnk havin класс wod work !!! coz, являющийся более длинным кодом, wod необходимо изменить многое ... Альтернативное решение (например, copyin recordset от одного к другому) ??? Помощь ANy1 ??? –

+0

Вы говорите мне, что вы не используете классы, потому что вам нужно писать код? Где вы помещаете методы типа «Подтвердить», «Загрузить», «Сохранить» или что-то еще? – pkario

+0

Я работаю в приложении Excel (рабочий лист Excel), где в одном методе (под) я написал весь код 1) Подключение к базе данных 2) Заполнение набора записей 3) Передача набора записей для проверки 4) заполните Столбец «Комментарии» в наборе записей для заполнения ошибок только в случае ошибочных записей. 5) Привяжите этот набор записей (после проверки) к Excel для отображения записей ........... так теперь, когда я пытаюсь заполните столбец, у меня есть ошибка, говоря: «Я не могу этого сделать» !!! и как писать ошибки в столбце «Комментарии»? –

0

Вы можете использовать MSDataShape с его синтаксисом SHAPE..APPEND, чтобы добавить новое поле в набор записей ADO. Вот краткий пример использования Jet (а.к.а. MS Access):

Sub ShapeAppendField() 

    On Error Resume Next 
    Kill Environ$("temp") & "\DropMe.mdb" 
    On Error GoTo 0 

    Dim cat 
    Set cat = CreateObject("ADOX.Catalog") 
    With cat 
    .Create _ 
     "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
     "Data Source=" & _ 
     Environ$("temp") & "\DropMe.mdb" 

    Dim jeng 
    Set jeng = CreateObject("JRO.JetEngine") 
    jeng.RefreshCache .ActiveConnection 

    Set .ActiveConnection = Nothing 
    End With 

    Dim con 
    Set con = CreateObject("ADODB.Connection") 
    With con 
    .ConnectionString = _ 
     "Provider=MSDataShape;" & _ 
     "Data Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
     "Data Source=" & _ 
     Environ$("temp") & "\DropMe.mdb" 
    .CursorLocation = 3 
    .Open 

    .Execute _ 
    "CREATE TABLE Test (" & _ 
    "existing_col INTEGER NOT NULL);" 
    .Execute _ 
    "INSERT INTO Test (existing_col)" & _ 
    " VALUES (1);" 

    Dim rs 
    Set rs = CreateObject("ADODB.Recordset") 
    With rs 
     .CursorType = 2 
     .LockType = 4 
     .Source = _ 
      "SHAPE {" & _ 
      " SELECT existing_col" & _ 
      " FROM Test" & _ 
      "} APPEND NEW adInteger AS new_col" 

     Set .ActiveConnection = con 
     .Open 
     Set .ActiveConnection = Nothing 

     .Fields("new_col").value = 55 
     MsgBox .GetString 
     .Close 

    End With 
    End With 
End Sub 
2

Я думаю, вы просто спрашиваете, как сделать несвязанный набор записей. Для этого вы просто меняете местоположение курсора набора записей.

Dim rstTest as ADODB.RecordSet 
Set rstTest = New ADODB.RecordSet 
With rstTest 
    .CursorLocation = adUseClient 
    .Open "your sql here", your_connection_object, adOpenStatic, adLockBatchOptimistic, adCmdText 
    ' now disconnect it and force the local copy 
    .ActiveConnection = Nothing 
End With 
Смежные вопросы