Прямой эфир


+1
Хотел бы предложить так же и свою статью про сортировку списков: C#: Сортировка списка (List), примеры и сравнение производительности
avatar

JeanLouis

  • 31 января 2012, 03:41
0
Большое спасибо:) Все таки ход моих мыслей был верным, вот тольк до
comboBox.ValueMember = "ID"; //Поле со значениями

я не додумался...:)
avatar

Hudson

  • 26 января 2012, 20:57
0
Элементарно:
comboBox.DataSource = result.ResultData.DefaultView;
comboBox.ValueMember = "ID"; //Поле со значениями
comboBox.DisplayMember = "NAME"; //Поле которое содержит отображаемые данные

//Чтобы получить выбранное значение делаем так
переменная = comboBox1.SelectedValue;
avatar

Roman

  • 26 января 2012, 19:47
0
Здравствуйте!
Нашел поиском эту библиотеку, она замечательная, но у меня есть по ней вопрос, ибо самому додуматься никак не получается…
Вот у меня есть запрос:
result = MySqlLib.MySqlData.MySqlExecuteData.SqlReturnDataset("Select catname from category", "Database=mysqlcp;Data Source=localhost;User Id=root;Password=");


Собственно как мне полученную через этот запрос информацию вывести в ComboBox?(в наличии имеется ComboBox с название bcat, но, думаю, это не играет роли:))
С уважением,
Hudson.
avatar

Hudson

  • 26 января 2012, 05:07
0
Я установил SAP Crystal Reports этот файлом CRforVS_13_0_2
avatar

AmFa

  • 11 января 2012, 16:57
0
Кстати «SAP Crystal Reports, version for Visual Studio 2010» — бесплатный. Только установится на студию не ниже Professional (на экспресс версиях работать не будет).
avatar

Roman

  • 10 января 2012, 18:15
0
Для 2010 студии нужен «SAP Crystal Reports, version for Visual Studio 2010»
Он отличается от того что идёт в комплекте с 2008 студией, и скачивается и устанавливается отдельно.
Проект автоматически из версии 2008 в 2010 наврядли — скомпилируется. Во всяком случае я делал отдельный, новый проект.
avatar

Roman

  • 10 января 2012, 18:13
0
ReportDocument myReport = new ReportDocument();
            myReport.Load(@".\CrystalReport1.rpt");

            DataSet myDS = new DataSet();
            
            myDS.ReadXml(@".\dataset.xml");
            myReport.SetDataSource(myDS);

Сбой при загрузке информации из базы данных.
Ошибка в файле CrystalReport1 {4B582FDD-47AC-499A-8831-36EA5955CB1E}.rpt:
Сбой при загрузке информации из базы данных.

Как исправить?
MS Visual 2010 Ultimate 10.0.30319.1
avatar

AmFa

  • 10 января 2012, 00:51
0
Если нет необходимости часто динамически менять данные с разных клиентов, то на мой взгляд лучше выбрать, крутить в памяти и не грузить зря сервер большой кучей запросов.

Тут всегда всё сводится к выбору — либо загрузить клиента и расходовать на нём больше ресурсов, либо загрузить сервер и сеть.
avatar

Roman

  • 13 декабря 2011, 21:59
0
На счет сравнительно небольшого…
В таблице хранится структура нескольких предприятий, записей около 4000-5000, стоит грузить все дерево сразу или нет?
avatar

it-serv

  • 13 декабря 2011, 03:01
0
Обыкновенной рекурсией.
Похожим образом как здесь организовано удаление: http://kbss.ru/blog/fbdb/218.html
Но это пример процедуры с рекурсией для удаления (её можно позволить делать самой базе), для выборки в дерево, лучше выбирать полностью за раз всё дерево в память а потом фильтрами его быстренько отстраивать (если дерево сравнительно небольшое) если дерево ооооочень большое, то подгружать кусочками при раскрытии веток.

Вот пример рекурсивной процедуры выборки из одного моего приложения (сильно не комментирую, думаю и так понятно):
public static TreeNode nodepaint_fast(TreeNode node)
        {
	    //Фильтруем наш источник данных.
            DataView dw11 = new DataView(dw_classif.Table);
            //Выбираем все ветки чьим родителем является переданная в процедуру ветка.  
            dw11.RowFilter = "`PARENT_ID` = " + node.Tag.ToString();

			
            for (int i1 = 0; i1 < dw11.Count - 1; i1++)
            {
		//Тут получаем данные из DataView и заводим новую ветку дерева.                
                string result = dw11[i1].Row[2].ToString();
                int id_node = int.Parse(dw11[i1].Row[0].ToString());
                int pid_node = int.Parse(dw11[i1].Row[1].ToString());
                int batch = int.Parse(dw11[i1].Row[8].ToString());

                TreeNode nd = new TreeNode();
                nd.Tag = id_node; //Сюда помещаю числовй идентичикатор (код ветки).
                nd.Text = id_node.ToString() + "." + result;
		
		//Запускаем для вновь созданной ветки - поиск веток потомков (рекурсия).
                nodepaint_fast(nd);

		//Добавляем ветку со всеми потомками в родительскую ветку.
                node.Nodes.Add(nd);
            }
            return (node);

        }


А вообще это делается рекурсией.

Есть ещё всякие хитрости для того чтобы обойтись без рекурсии — но это касается высоко нагруженных проектов и делается в основном за счёт особенности структуры данных.
avatar

Roman

  • 13 декабря 2011, 00:53
0
Приветствую.
А нет случаем примера кода, как сформировать дерево из БД?
У меня дерево хранится в одной мускульной таблице, но никак не могу въехать как это реализовать.
avatar

it-serv

  • 12 декабря 2011, 13:54
0
Большое спасибо за оперативный ответ.
>>источником сначала ложится файл флаг — затем загружаются файлы — когда файлы загружены флаг удаляется, клиент проверяет наличие файла флага — если есть то ничего не делает и ждёт дальше — если нет — скачивает.<<
— это знакомо, у меня другая ситуация, хотелось примерно так реализовать:
public bool ReadFTPFiles(string fileFtp);
{
filePatch = «ftp://localhost/» + fileFtp;
try
{
using (var fs = File.Open(filePatch, FileMode.Open, FileAccess.Read, FileShare.None))
{
return true;
}
}
catch (IOException ioex)
{
SkipFiles = +1;
return false;
}
}
Буду дальше думать, спасибо!
Всех благ…
avatar

vitaliy_kag

  • 7 декабря 2011, 17:36
0
По файлу даже не знаю, можно ли так сделать — чтобы по самому файлу определить весь он уже или нет, можно лишь определить больше он того что мы уже скачали или нет.
Но вообще в быту для всяких задач обмена данными — это делается так: источником сначала ложится файл флаг — затем загружаются файлы — когда файлы загружены флаг удаляется, клиент проверяет наличие файла флага — если есть то ничего не делает и ждёт дальше — если нет — скачивает.

Можно ещё в сам файл-флаг разную информацию помещать, для информирования клиента.
avatar

Roman

  • 7 декабря 2011, 17:18
0
День добрый!!!
посоветуйте пожалуйста, ситуация такая:
есть ФТП-папка с файлами(только чтение), можно ли узнать с клиента что файл на сервере еще не загружен полностью, как бы сказать клиенту что «файл занят попробуйте скачать его позже»
Большое спасибо…
avatar

vitaliy_kag

  • 7 декабря 2011, 17:04
+1
Перед этой строкой нужно создать новую форму: Form2 f2 = new Form2();//в форме-источнике, а после нее уже CallBackMy.callbackEventHandler(«Передаваемые данные.»);

p.s.: Спасибо за статью =)
avatar

Mozart

  • 26 октября 2011, 19:32
0
Вообще класс был написан изначально в качестве примера написания класса. Сам по себе подобного рода класс я создаю как прослойку с которой в итоге программа работает, правда добавляю в него постраничную выборку результатов и другие удобности, чтобы не реализовывать их по 10 раз в коде.

В примере показана только выборка, вообще можно делать и вставку, изменение, и удаление позиций, для этого есть метод:
MySqlLib.MySqlData.MySqlExecute.SqlNoneQuery

Вот, пример того как заставить его работать:
MySqlLib.MySqlData.MySqlExecute.MyResult result = new MySqlLib.MySqlData.MySqlExecute.MyResult();

            result = MySqlLib.MySqlData.MySqlExecute.SqlNoneQuery("insert into table (field1, field2) values ('value1','value2')", "Database=inventar_alleya;Data Source=localhost;User Id=root;Password=240580");
            
            if (result.HasError == false)
            {
                MessageBox.Show("Запрос успешно выполнен!");
            }
            else
            {
                MessageBox.Show(result.ErrorText);
            }


Ещё есть метод при помощи которого можно запускать запросы возвращающие один параметр (значение). Например выборку количества записей или максимального значения поля.
MySqlLib.MySqlData.MySqlExecute.SqlScalar

Вот пример:
MySqlLib.MySqlData.MySqlExecute.MyResult result = new MySqlLib.MySqlData.MySqlExecute.MyResult();

            result = MySqlLib.MySqlData.MySqlExecute.SqlScalar("select count(*) from table1", "Database=inventar_alleya;Data Source=localhost;User Id=root;Password=240580");

            if (result.HasError == false)
            {
                MessageBox.Show("Количество строк в таблице: "+result.ResultText);
            }
            else
            {
                MessageBox.Show(result.ErrorText);
            }
avatar

Roman

  • 16 октября 2011, 21:42
0
Здравствуйте! не подскажите, где можно скачать пример написанной программы на C# ну или хотя листинг кода, с использованием этого класса, в котором реализовано хотя бы добавление, редактирование и удаление данных, в сети я ничего не нашел! заранее спасибо!
avatar

otmorozok89

  • 14 октября 2011, 19:04