Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182

Доступ к объекту созданному в другом методе

20.01.2013, 17:19. Показов 3016. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 class Program
    {
        
        static void Main(string[] args)
        {
            
            Program.ImExcel("C:/1.xls");
            Console.WriteLine(DtSet.Tables[0].Rows[0]["F1"].ToString());
            Console.ReadKey();
            
 
        }
        public static void ImExcel(string nfile)
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;
 
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(nfile);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            string sheet = xlApp.ActiveSheet.Name;
 
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
 
            System.Data.OleDb.OleDbConnection MyConnection;
            System.Data.DataSet DtSet;
            System.Data.OleDb.OleDbDataAdapter MyCommand;
            MyConnection = new System.Data.OleDb.OleDbConnection(string.Format(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};
                                                                    Extended Properties=Excel 8.0;", nfile));
 
            MyCommand = new System.Data.OleDb.OleDbDataAdapter(string.Format("select * from [{0}$]", sheet), MyConnection);
 
            DtSet = new  System.Data.DataSet();
            MyCommand.Fill(DtSet);
Коротенько объясню что нужно
В метод ImExcel передаются путь к файлу, дальше создается датасет DtSet и уже в методе Main мне нужно получить доступ к объекту DtSet. Но компилятор выдёт мол Ошибка 1 Элемент "DtSet" не существует в текущем контексте.
Что нужно сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2013, 17:19
Ответы с готовыми решениями:

Как получить доступ к объекту, созданному в другой форме?
Я создал два окна, MainForm и FormInfo. В классе MainForm создаётся объект типа WindowsMediaPlayer. И мне нужно сделать так, чтобы такая...

Как получить глобальный доступ к динамически созданному объекту
вообщем кнопка tb1 определяется в button1_Click и следовательно она локальная,и недоступна в её обработчике void tb1_Click(object sender,...

Классы. Доступ к созданному объекту.
Доброе утро, форум.:friends: Имеется код, чисто для примера. файл book.h #ifndef BOOK_H #define BOOK_H struct Book {

16
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.01.2013, 17:24
Kimel, Вынеси за пределы метода System.Data.DataSet DtSet;
или лучше напиши это в Main и передай как параметр в
C#
1
ImExcel(string nfile,DataSet dtSet)
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 17:30  [ТС]
Я немножко не понял что нужно сделать, у меня не работает именно команда
C#
1
Console.WriteLine(DtSet.Tables[0].Rows[0]["F1"].ToString());
Жалуется на датсет, можете поконкретней обьяснить плиз?)
0
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.01.2013, 17:35
Kimel, Вот так
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class Program
    {
        
        static void Main(string[] args)
        {
            
            System.Data.DataSet DtSet;
            Program.ImExcel("C:/1.xls",DtSet);
            Console.WriteLine(DtSet.Tables[0].Rows[0]["F1"].ToString());
            Console.ReadKey();
            
 
        }
        public static void ImExcel(string nfile,DataSet dtSet)
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;
 
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(nfile);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            string sheet = xlApp.ActiveSheet.Name;
 
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
 
            System.Data.OleDb.OleDbConnection MyConnection;
            System.Data.OleDb.OleDbDataAdapter MyCommand;
            MyConnection = new System.Data.OleDb.OleDbConnection(string.Format(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};
                                                                    Extended Properties=Excel 8.0;", nfile));
 
            MyCommand = new System.Data.OleDb.OleDbDataAdapter(string.Format("select * from [{0}$]", sheet), MyConnection);
 
            DtSet = new  System.Data.DataSet();
            MyCommand.Fill(DtSet);
  }
}
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 17:40  [ТС]
Дело в том что мне нужно например Dtset1 Dtset2 Датасет 1 для всех экземпляров, какой смысл каждый раз его передавать?
0
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
20.01.2013, 17:42
Kimel, и где мне запятую поставить в вашем предложении?
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 18:15  [ТС]
Сори))
Дело в том, что мне нужно например Dtset1, Dtset2. Датасет один ,для всех экземпляров, какой смысл каждый раз его передавать?

Добавлено через 6 минут
Ладно, обьясню по другому, эта конструкция бессмысленная
C#
1
public static void ImExcel(string nfile,DataSet dtSet)
а точнее эта часть DataSet dtSet датасет объявляется внутри метода и 1 раз для всех экземпляров и он будет одинаковый для всех, мне нужно просто из другого метода, например так
C#
1
Console.WriteLine(DtSet.Tables[0].Rows[0]["F1"].ToString());
получить к нему доступ

Добавлено через 5 минут
А вынос за пределы метода
C#
1
System.Data.DataSet DtSet;
не даёт никакого результат вообще

Добавлено через 19 минут
Неужели никто не сталкивался? Помогите пожалуйста, очень нужно
0
 Аватар для GOLD
124 / 37 / 6
Регистрация: 14.01.2012
Сообщений: 264
20.01.2013, 20:01
Можно полный код программы?
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 20:41  [ТС]
Вот полный код работающей! на данный момент программы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Excel = Microsoft.Office.Interop.Excel;
 
namespace ConsoleApplication3
{
    
    class Program
    {
        
      
        static void Main(string[] args)
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;
 
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open("C:/1.xls");
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            string sheet = xlApp.ActiveSheet.Name;
 
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
 
            System.Data.OleDb.OleDbConnection MyConnection;
            System.Data.DataSet DtSet;
            System.Data.OleDb.OleDbDataAdapter MyCommand;
            MyConnection = new System.Data.OleDb.OleDbConnection(string.Format(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};
                                                                    Extended Properties=Excel 8.0;", "C:/1.xls"));
 
            MyCommand = new System.Data.OleDb.OleDbDataAdapter(string.Format("select * from [{0}$]", sheet), MyConnection);
 
            DtSet = new System.Data.DataSet();
            MyCommand.Fill(DtSet);
            
            
            Console.ReadKey();
        }
        
    }
}
Задача такая, нужен метод типа

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;
 
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open("filename");
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            string sheet = xlApp.ActiveSheet.Name;
 
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
 
            System.Data.OleDb.OleDbConnection MyConnection;
            System.Data.DataSet DtSet;
            System.Data.OleDb.OleDbDataAdapter MyCommand;
            MyConnection = new System.Data.OleDb.OleDbConnection(string.Format(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};
                                                                    Extended Properties=Excel 8.0;", "filename"));
 
            MyCommand = new System.Data.OleDb.OleDbDataAdapter(string.Format("select * from [{0}$]", sheet), MyConnection);
 
            DtSet = new System.Data.DataSet();
            MyCommand.Fill(DtSet);
Которому я передаю путь к файлу (filename) Он её подставляет и создаёт датасет. В принципе, я пол задачи сделал уже, но доступ к датасету созданному внутри этого метода извне НЕТУ.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.01.2013, 21:13
Так вы объявите его статистическим полем в классе, и будет доступ из любого метода.
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 21:37  [ТС]
Не получается, помогите плиз!
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.01.2013, 21:47
Цитата Сообщение от Kimel Посмотреть сообщение
Не получается, помогите плиз!
Что именно не получается? Ошибка выдается? Или неожиданное поведение? Или вы не знаете как сделать? Что?
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 22:26  [ТС]
Когда я прописую метод статическим, это или не помогает или я просто не там пишу, можете написать в каком месте мне прописать плиз

Добавлено через 21 минуту
Ну помогите плиз, под зарез нужно
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.01.2013, 23:21
Я говорил поле сделать статическим, а не метод. Метод то у вас и так static.
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 23:25  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Я говорил поле сделать статическим, а не метод. Метод то у вас и так static.
Какое именно поле, я уже куда только мог вписывал статик, компилятор ругается
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.01.2013, 23:48
Внутри класса, объявите поле, с модификатором static.
0
17 / 18 / 0
Регистрация: 01.02.2012
Сообщений: 182
20.01.2013, 23:50  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Внутри класса, объявите поле, с модификатором static.
Ну я не умею, можете 1 раз показать как? Я запомню и буду знать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2013, 23:50
Помогаю со студенческими работами здесь

Доступ к коллекции, объявленной в другом методе
Доброго времени суток! Столкнулся с такой проблемой. Есть коллекция list, которая объявляется при запуске приложения. Мне нужно...

Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту?
Это можно : Array a(10); a.set(0,5); Array b(a); А это нельзя : Array a(10); Array b(20); a = b;

Обращение к динамически созданному объекту
Как мне обратиться к объекту, который я создал динамически, например на этот же TextBox поставить фокус...Я хочу чтобы при нажатии на...

Обращение к объекту, созданному программно
Столкнулся с проблемой – создаю объект (Panel) при нажатии мышки. Мне необходимо его переместить, вот только не знаю как. Подскажите,...

Как обратится к объекту по созданному имени?
то есть по имени объекта - но которое становится известным в результате выполнения кода. это ведь является весьма необходимой задачей в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru