none
Видимость объекта DataSet RRS feed

  • Общие обсуждения

  • Я не вижу объекта DataSet. Создаю его в одном классе формы и с ним прекрасно работаю. Хочу получить его данные из другого класса и не вижу его.
    Пример:

    Public Class1
        Public ds as new DataSet
           Private Sub Load()
             .
             .
             da.fill(ds)
             .
             .
           End Sub

    В это классе я его вижу, но

    Public Class2
           Private Sub Load()
              Dim cls as new Class1
                 bs.datasource=cls1.ds  -   здесь нет ни одной таблицы
              .
              .
           End Sub
    • Изменен тип I.Vorontsov 12 января 2010 г. 8:48
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 22:26 MSDN Forums consolidation (От:Разработка Windows-приложений)
    23 декабря 2009 г. 13:31

Все ответы

  • Это потому что создается еще один экземпяр класса в котором Load() никогда не запускался.
    Следует использовать тот же экземпяр Class1 который был создан в том классе формы где все работает.
    Можно так же выполнить Load() в новом экземпляре - но это не слишком разумно потому что будет две копии данных в памяти.
    This posting is provided "AS IS" with no warranties, and confers no rights.
    3 января 2010 г. 23:43
    Модератор
  • Доброе утро.
    Большое спасибо за ответ. Хочу перейти сразу к делу.
    Этот вопрос я задал ещё в том году. За это время я искал решение этому вопросу и вот что пришло в голову

        Public Class Form1                                                   Public Class Form2
                                                                                          Private cls1 as Form1
                                                                                             Private dsForm2 as New DataSet =  cls1.clsForm1(sql)                                                       

                          Private Sub Form1_Load()                                      Private Sub Form2_Load()
                          .
                          End Sub                                                                End Sub

                 Public Function clsForm1(ByVal sql As string)
                          Dim dsNew as New DataSet
                          .
                          da.Fill(dsNew)
                          .
                          clsForm1=dsNew
                 End Function

    Здесь Form1 это MDIForm (родительская). При загрузке Form2, да, я получаю таблицы в dsForm2 и с ними работаю.
    Но в этом решении Form1 загружается быстро, а вот Form2 гораздо медленнее.
    Из Вашего ответа я понял так решение

    Public Class1                                       Public Class2
                                                                  Private cls as Class1
        Public ds as new DataSet                            Private Sub Load()
                                                      
           Private Sub Load()                                
             .
             .
             da.fill(ds)                                                   bs.datasource=cls.ds  
             .
             .
           End Sub                                                 End Sub


    Прошу меня извинить за дотошность, но если что исправьте меня
    Спасибо за понимание.
    Всем успехов в своих начинаниях.
       
    12 января 2010 г. 7:50