Получение пустого отчета с данными vb6 - PullRequest
0 голосов
/ 25 февраля 2010

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

Ввод данных в таблицы Invoice и ItemsInvoice. Затем получите maxId с помощью (Adodc) из базы данных, чтобы показать последний сгенерированный счет.

Затем передача максимального идентификатора в качестве параметра в отчет данных, в котором отображается счет в соответствии с идентификатором счета.

Работает нормально, когда я впервые генерирую счет. Теперь для 2-го счета без закрытия приложения я получаю пустой отчет с данными. Для отчета данных я использую dataenvironment.

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

Что не так?

Ответы [ 4 ]

0 голосов
/ 23 января 2017

Попробуйте метод обновления, например data1.recordset.requery или Data1.refresh. Это должно работать, если вы используете элементы управления данными.

0 голосов
/ 15 апреля 2010

Загрузите среду данных и обновите отчет с данными. Я также создаю отчет аналогичным образом. Я столкнулся с этой проблемой. Вот решение

Load DataEnvironment1
With DataEnvironment1
     'Command1 is the command added to data environment where you fire query or 
     'set it to point to a table

    If .rsCommand1.State <> 0 Then .rsCommand1.Close
    .Command1 maxid         'parameter you pass to the recordset

End With
DataReport1.Refresh
DataReport1.Show

Вот и все! Вы сделали. Я уверен, что это будет работать. Скажи мне, если это не так.

0 голосов
/ 16 июля 2015

Я не знаю, будет ли вас беспокоить ответ, но если у кого-то еще есть такая же проблема, вот пример того, как эта проблема работает: Представьте, что есть ворота и охранник, который смотрит, кто входит, когда приходит первый человек (первый счет), охранник регистрирует его, открывает ворота (это событие «Load DataEnvironmet») и затем пропускает парня. Охранник считает, что никто другой не придет и не откроет дверь (инструкция считает, что DataEnvironment заканчивается, и значение EOF становится Истиной), но когда приходит второй парень (второй счет), охранник не может спросить его, кто (снова имеет значение и пропускает его, не регистрируя его (по этой причине второй счет-фактура и последующий счет-фактура будут пустыми). Решение состоит в том, чтобы закрыть ворота ("Unload DataEnvironment") после парня проходит (после показа данных отчета). Решением является код, полученный из Sangita выше, но перед завершением подпрограммы вам необходимо выгрузить DataEnvironment, над которой вы работали. Для меня это работает. Извините, если ответ не тот, который вы искали (а также, если кто-то еще не может понять, что я пишу, мой английский не очень хорош). На всякий случай напишу код с решением

 Load DataEnvironment1
 With DataEnvironment1

   If .rsCommand1.State <> 0 Then
     .rsCommand1.Close
   End If
   .Command1 Value(ID)  

 End With
 DataReport1.Refresh
 DataReport1.Show
 Unload DataEnvironment1
0 голосов
/ 01 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...