Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Открыть новую тему     Написать ответ в эту тему

V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mike13x13

Цитата:
Поставь NumericUpDown1.Enabled=false;

тогда контрол неактивный станет, а мне нужна возможность выделять цыферки и копировать их в буфер
 
Добавлено:
ничего умнее, чем обнулить приращение не придумал
получилось так

Код:
numericUpDown1.ReadOnly = true;
numericUpDown1.Increment = 0;

теперь NumericUpDown полностью ReadOnly

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 22:24 18-03-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
По ряду причин меня перестали устраивать стандартные компоненты ToolStrip, ToolStripItem и производные от них. Никто не знает бесплатной и с исходниками библиотеки для работы с меню и тулбарами?

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 13:47 20-03-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
Mike13x13  
 
Цитата:Поставь NumericUpDown1.Enabled=false;  
 
 
тогда контрол неактивный станет, а мне нужна возможность выделять цыферки и копировать их в буфер  
 
Добавлено:  
ничего умнее, чем обнулить приращение не придумал  
получилось так

 
Чё, для такой надобности нормально получилось

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 17:51 20-03-2008
0ndrash

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
Если будешь много readonly NumericUpDown контролов использовать, то есть смысл заюзать такое решение:
http://www.codeproject.com/KB/miscctrl/Fixed_NumericUpDown.aspx

Всего записей: 2 | Зарегистр. 03-03-2008 | Отправлено: 00:13 21-03-2008
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
0ndrash
спасибо
Как я понимаю там создают копию контрола с измененными методами DownButton/UpButton. И чую что этим пофиксенным контролом будет не так удобно работать, в том смысле чтобы добавить его на форму придется не мышкой кидать, а вручную прописывать в коде. Или я не прав?
 
Там дальше идет коментарий "Fix without replacing the control". Вроде чел пытается решить проблему без нового контрола, только что он мудрит я не понял

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 23:34 21-03-2008
fvgrod



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Если строчек в базе более 100 тысяч, то периодически выпадает ошибка:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
…..
 
выполняю команду
Sql.Base.bool_AllDelete = false;
Sql.Base.AllDelete();
a:
   if (Sql.Base.bool_AllDelete != true)
   {
        Thread.Sleep(1000);
        goto a;
   }
...
 
public static void AllDelete()
        {
            // Объекты подключения
            SqlConnection myConnection = new SqlConnection();
            SqlCommand myCommand = new SqlCommand();
 
            // Задаем переменные
            myConnection.ConnectionString = Sql.Connect.ConnectionString;
            myCommand.Connection = myConnection;
            myCommand.CommandType = CommandType.Text;
 
            // Чтение параметров программу
            myCommand.CommandText = "DELETE FROM [mail]";
            try
            {
                myCommand.Connection.Open();
                myCommand.ExecuteNonQuery();
                myCommand.Connection.Close();
                 
            }
            catch (SqlException ex)
            {
                SQL_Error = true;
                SQL_Error_Text = ex.ToString();
            }
            bool_AllDelete = true;
        }
 
Добавлено:
Подскажите пожалуйста в чем трабла и как ее наладить(

Всего записей: 98 | Зарегистр. 17-10-2006 | Отправлено: 21:55 22-03-2008
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
fvgrod
if и goto использовать не модно Есть же цикл while.
Для удаления всех записей из таблицы есть намного более эффективная SQL-команда TRUNCATE.

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 22:12 22-03-2008
fvgrod



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EZH
Спасибо попробую.

Всего записей: 98 | Зарегистр. 17-10-2006 | Отправлено: 11:13 23-03-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Для удаления всех записей из таблицы есть намного более эффективная SQL-команда TRUNCATE.
Эта команда не работает, если на таблицу имеются ссылки через FK. Так что удалять данные порциями, после каждой порции - commit.

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 13:06 23-03-2008
fvgrod



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И все равно вылетает ошибка при долгом копировании таблиц с выборкой или импотрировании данных из текстового файла:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
 
В чем может быть трабла?

Всего записей: 98 | Зарегистр. 17-10-2006 | Отправлено: 23:11 23-03-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
fvgrod
Трабла в том, что операция длится дольше, чем установленное время таймаута... Отсюда два выхода: дробить операцию на несколько (это лучший выход) и увеличить время таймаута.

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 09:15 24-03-2008
fvgrod



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BaluBig
а почему не работает функция (выше писал текст всего кода):
a:  
   if (Sql.Base.bool_AllDelete != true)  
   {  
        Thread.Sleep(1000);  
        goto a;  
   }  
 
а как увеличить время таймаута? операцию дробить ни как не получиться((

Всего записей: 98 | Зарегистр. 17-10-2006 | Отправлено: 10:57 24-03-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
fvgrod

Цитата:
а почему не работает функция

Потому что выполнение SQL-команд у нас синхронное по умолчанию. И управление на метку a: попадет только тогда, когда закончится выполнение myCommand.ExecuteNonQuery();
 

Цитата:
а как увеличить время таймаута?

SqlCommand.CommandTimeout, по умолчанию там 30 секунд.
 

Цитата:
операцию дробить ни как не получиться((

Не верю. Записи в таблице должны иметь первичный ключ (primary key). В качестве такого ключа часто используется некое автоинкрементное поле (с признаком identity). Если поля такого нет - его можно создать. Когда поле есть, ничего не мешает удалять кусками опираясь на значение ключа.  
Предположим, что поле называется ID. Тогда мы можем последовательно выполнять запросы:
Код:
 
begin tran
delete from [mail] where id between 0 and 100
commit tran
...
begin tran
delete from [mail] where id between 101 and 200
commit tran
...
и так далее. Диапазон значений ключа легко получить запросом
Код:
select max(id), min(id) from [mail]
. При таком подходе мы в качестве бонуса получаем возможность организовать прогрессбар и кнопку отмены операции.

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 20:02 24-03-2008
SOFF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fvgrod
создай в БД сохраненную процедуру
CREATE PROCEDURE DeleteMail
BEGIN
 TRUNCATE [mail]
END
 
затем в коде меняешь:
myCommand.CommandType = CommandType.StoredProcedure;  
myCommand.CommandText = "DeleteMail";
 
и усё... за 2 сек хоть миллион строк удалить.

Всего записей: 37 | Зарегистр. 04-08-2004 | Отправлено: 01:04 26-03-2008
Viverra



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
И все равно вылетает ошибка при долгом копировании таблиц с выборкой или импотрировании данных из текстового файла:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.  

а вообще хоть какие-то операции получается с базой проделать? делаешь все внутри одного соединения? Пропиши в ConnectionString += ";timeout=<много>".
 
SOFF

Цитата:
создай в БД сохраненную процедуру TRUNCATE

TRUNCATE обсуждалcя выше, а хранимая процедура будет не быстрей, чем послать тот же Sql текстом.

Всего записей: 16 | Зарегистр. 19-02-2008 | Отправлено: 13:39 26-03-2008
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вопросы по преобразованию данных
 
1. имею массив byte[4] m и число uint k. Как присвоить k=m[]?
 
2. массив byte[10] m и число uint k. k=m[2,5]?
 
3. uint k, byte n. Как присвоить n = (3 байт 4-xбайтного k )? Тут я думал про битовые сдвиги, но может еще чего есть...

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 06:51 27-03-2008
BaluBig



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
V0lt
Если не пугат небезопасный код, то можно так:

Код:
 
    class Program
    {
        static void Main(string[] args)
        {
            Copy();
            Console.WriteLine(k); // -> 65535
        }
 
        static uint k;
        static byte[] m = new byte[] { 0xFF, 0xFF, 0, 0 };
 
        static unsafe void Copy()
        {
            fixed (uint* ptr = &k)
            {
                Marshal.Copy(m, 0, (IntPtr)ptr, 4);
            }
        }
    }
 

Всего записей: 404 | Зарегистр. 06-02-2004 | Отправлено: 16:13 27-03-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется задача: мониторить систему на появление нового девайса (накопитель, к примеру, флэшка), при обнаружении слить с него определенную инфу. Раньше такого не делал, но думал, что это задача часто встречающаяся и найти в инете инфу будет легко. Но вот уже пару часов рою, ничего толком не нарыл. Может плохо рою? Принцип понятен - в теневом потоке перехватывать соответствующее системное сообщение. Может кто и реализацию подскажет?

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 12:58 28-03-2008
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mike13x13  
Это лучше делать средствами WinAPI: например, обрабатывать широковещательное системное сообщение WM_DEVICECHANGED. И твой принцип как раз непонятен:
Цитата:
Принцип понятен - в теневом потоке перехватывать соответствующее системное сообщение
Собственно, зачем тут теневой поток, и зачем тут перехват? Уведомление рассылается и так, "бесплатно".

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 13:15 28-03-2008
jONES1979



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mike13x13
точно такая же задача пару месяцев назад разжовывалась в журнале хакер. Ищи на их сайте

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 11:50 29-03-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru