[WT] [Архив] [Поиск] Главная Управление
[Совместно с Ычаном]

[Назад]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 4586)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаемые типы файлов: 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP
  • Максимально допустимый размер файлов: 10000 кБ.
  • Изображения, размер которых превышает 200 на 200 пикселей, будут уменьшены.
  • Ныне 1723 unique user posts. Посмотреть каталог
  • Радио:

Файл: 130553118771.jpg-(56.05KB, 400x535, cirno9.jpg)
4586 No. 4586 watch    
Привет Ычан.
Делаю экспорт данных в эксель. Как советует гугл, лучше всего сделать экселе шаблон документа, а затем сохранить его как xml и работать с ним как с обычным xml-файлом
И тут возникла проблема - нужно прописать аттрибут в виде
ss:Type="String"
но
получается только ss="String"
Что я тут мог пропустить, и как добраться до этого :Type (прочитать или изменить)
Развернуть все изображения
>> No. 4587    
Не очень понял.
>> No. 4589    
<ss type="string">?
>> No. 4591    
>>4586 Попробуй двоеточие заменить его кодом ascii. Странная проблема, я тоже работал с xml такого вида, и атрибуты такого вида читались и писались отлично. Я правда делал на c++ и tinyxml
>> No. 4595    
Файл: 130558115356.jpg-(24.64KB, 724x743, 1265199978681.jpg)
4595
>C#
>Пишет в эксель, руками сериализуя данные в xml
google:interop
>> No. 4597    
>>4595
Ты такой умный, хули сразу про оле не написал?
>> No. 4745    
Итак, продолжаю писать свою программу, встала новая проблема:
периодически присылается обновленная таблица в dbf формате (т.е. выбора формата таблицы у меня нет).
Для загрузки использую
conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<папка с dbf-файлом>;Extended Properties=dBASE IV;User ID=Admin;Password=";
dbfConn = new OleDbConnection(conStr);
aAdapter.SelectCommand = new OleDbCommand("SELECT * FROM <полный путь к dbf-файлу>", MF.dbfConn);
aAdapter.Fill(DSWork);
Проблема в том, что не очень большая база (5мб, 54к записей) загружается секунд 10
Для сравнения - в экселе та же таблица открывается за 3 секунды
>> No. 4758    
>>4745

Если aAdapter — объект класс OleDbDataAdapter, то попробуй вместо
aAdapter.Fill(DSWork);
Использовать метод "Update"
aAdapter.Update

Правда, это может не подойти, т.к. я понятия не имею, что за классы ты там используешь.
>> No. 5016    
Файл: 131072134250.jpg-(40.86KB, 510x640, 5732_Cirno.jpg)
5016
Сырна снова выходит на связь. Улучшаю внешний вид.
Имеется массив Control-ов, размер заранее неизвестен. Каждому привязывается один и тот же обработчик события (клик мыши). Как определить какой именно Control из этого массива вызвал событие?
>> No. 5017    
>>5016

Не совсем понял, о чём ты.
Например, есть
> SomeStuff[] array;

Создаём контрол
> array[0] = new SomeStuff();
> array[0].Name = "buttonsArray[0]";
> array[0].Click += и всё такое.

Добавляем его на форму и всё так


private void SomeStuff_Click(object sender, EventArgs e)
{
if ( (sender as SomeStuff).Name == "buttonsArray[0]") { }
}

Например так. Но мне это не нравится.

Так же в контролах есть поле Tag, можешь в него писать любую хуйню и читать её. По нему можешь и различать свои контролы.
>> No. 5019    
ОП, ты отвечай.
Если находишь другое решение проблемы — рассказывай/давай ссылки.

А то — в ответ тишина и не понимаешь, глупость сказал или умную вещь.
Да и другим будет интересно узнать о чужих подходах/решениях.
>> No. 5020    
Файл: 131075171145.png-(9.66KB, 118x148, th_SadCirno.png)
5020
>>5017
есть
> SomeStuff[] array;

Циклом создаем
> array[i] = new SomeStuff();
//далее задаем все необходимые свойства
//ставим на форму/панель
panel1.Control.Add(array[i]);
//и вешаем обработчик
> array[i].Click +={presTabToWin}

далее сам обработчик

private void SomeStuff_Click(object sender, EventArgs e)
{
//тут, в обработчике, мне нужно понять, какой именно элемент массива был кликнут
}
>> No. 5021    
>>5020
А что лежит в sender?
>> No. 5022    
>>5020
Вот здесь:
>//далее задаем все необходимые свойства
Задай уникальное имя контролу:
[1] >> array[i].Name = "arrayControl_"+i.ToString();

Получается что-то в духе: "arrayControl_0", при i=0;
Теперь ты можешь узнать через имя контрола его порядковый номер в массиве.

Можно сделать так:
[2] >> array[i].Tag = i;
Теперь в .Tag лежит число, порядковый номер твоего контрола в массиве.


и поступай, как вот здесь сказано >>5017

Сейчас кликнули по контролу, который носит номер "42":

private void SomeStuff_Click(object sender, EventArgs e)
{
//какой именно элемент массива был кликнут?

if ( (sender as SomeStuff).Name == "arrayControl_42")
{
// Если ты сделал, как в [1], то это условие — true
}

if ((int)(sender as SomeStuff).Tag == 42)
{
// Если ты сделал, как в [2], то это условие — true
}

}

Код, конечно выглядит, как пиздец ( и если .Tag не приведётся к int, то будет исключение).


>>5021

object sender — тот объект, который вызвал событие. Если клик (или любое другое событие) по определённой кнопке (картинке, лейблу, полю ввода, форме, другой херни), то sender — та кнопка, по которой кликнули.
>> No. 5057    
Файл: 131184004624.jpg-(20.57KB, 400x400, Assistant - Cirno 9.jpg)
5057
оп-кун репортинг
Все оказалось намного проще (Сырна опять перехитрила сама себя)
(sender as <тип контрола>) и есть нужный мне элемент, можно делать с ним все что нужно
>> No. 5058    
>>5057
Ну бака же.
>> No. 5076    
Файл: 131222012778.jpg-(163.62KB, 600x673, 1310654608984.jpg)
5076
вопрос не совсем по кодингу:
а как теперь оценить свою программу?
Что она умеет:
печать больничных листов, сбор статистики, выдача отчетов.
Покупатели, как подсказывает КЭП - обычные бюджетные больницы и поликлиники, то есть завышать цену не рекомендуется
>> No. 5077    
>>5076
Стоимость программы — это как масса фотона. Определяется не самой программой, а тем, за сколько ты сможешь её продать. Может принимать произвольную (квантованную) величину.
>> No. 5116    
Файл: 13131298714.jpg-(141.74KB, 879x1405, e13552b01f57022d711de0d03563a634.jpg)
5116
сегодня на повестке дня 2 вопроса.
1. Программа собрана с Target Framework в .NET Framework 3.5
До недавнего времени она спокойно запускалась даже на 1-м фреймворке
Но после недавних изменений кода внезапно перестала работать часть программы.
Вопрос - что я такого добавил (и что такого есть в 3.5 но нет в 2.0?)
2. (DataTable)table.Rows[<номер строки>]["column_name"] == DBNull.Value;
В "старых" участках кода это работает как надо. В сегодняшних изменениях почему-то возвращает false
>> No. 5117    
>внезапно перестала работать часть программы
Перестала работать — значит выдаёт ошибку? Указание текста ошибки увеличивает шанс того, что тебе помогут, в 9000 раз.

>Вопрос - что я такого добавил (и что такого есть в 3.5 но нет в 2.0?)
Скорее всего, ты использовал Linq. Для его работы на 2.0 нужно скопировать System.Core.dll в папку с программой.

>2.
Отлаживай. Ты программист или кто?
>> No. 5120    
Файл: 131315942927.jpg-(338.21KB, 700x849, 1308926891666.jpg)
5120
итак, дело оказалось не во фреймворке (установил на тот компьютер 3.5, та же самая ошибка)
Ошибка возникает в обработчике изменения размера груп-бокса, что про выход за размеры массива (почему эта ошибка не возникала во время отладке на рабочем компе - непонятно)

Посмотрел, что там за чудо стоит вместо винды. XP SP2.
ZverCD.

Можно ли что-нибудь с этим сделать, не устанавливая нормальную ХР?
>> No. 5122    
>>5120
Ну, ты же заинтересован, чтобы твоя программа работала на разных машинах, а не только в тепличных условиях. Поэтому гораздо лучше найти причину, чем переустанавливать шиндоус.

И опять ты просишь нас гадать, что же у тебя происходит. Где случается ошибка? Как выглядит стек? Скомпилируй в отладочном режиме, скопируй на тот компьютер ещё и pdb, посмотри, какие строчки упоминаются в стеке. Отлаживай же, бака!
>> No. 5155    
Файл: 131434552669.jpg-(219.49KB, 974x1040, cfc500c9a4d0a0870ec75f8f1bb668a5.jpg)
5155
ОП-кун репортинг
Выше я уже говорил, что программа печатает на Госзнаковских бланках.
Привезли новую партию. Все бы ничего, но напечатанно все немного правее и ниже. Госзнак такой госзнак.

Совета не прошу, просто еще раз напомнил себе, что не надо забывать, в какой стране живешь
>> No. 5158    
Файл: 131447442056.png-(499.39KB, 700x600, cir_no_evil_by_kouotsu.png)
5158
А вот сегодня совет я все-таки спрошу
Предположим, есть класс
class Example
{
int a;
}
Как отслеживать изменение a и что-либо делать в случае этого изменения?
>> No. 5159    
>>5158
1. Сделай её пропертью.
2. (опционально) Запили к классу INotifyPropertyChanged интерфейс.
3.??????
4.ПРОФИТ!!!
>> No. 5230    
Файл: 131555443110.jpg-(212.09KB, 707x1000, e20dc9caa0fd18fe001bdb360d76a7fd.jpg)
5230
итак, имеется запрос вида

SELECT blanks.id, blanks.serial
FROM blanks
WHERE (((blanks.serial) Like "003820"));

нужно засунуть его в c# в виде параметризованного запроса

Проблема вылезает именно с условием. Там где условие просто "FIO=@FIO" проблем нет, когда пытаюсь сделать что-то типа "blanks.serial Like @serial
" условие не работает
>> No. 5260    
Файл: 131614907110.jpg-(202.77KB, 455x640, 1314650884578.jpg)
5260
с предыдущей проблемой вроде разобрался, вылезла новая (хоть и не критичная)
Под 7-кой MonthCalendar игнорирует шрифт отличный от дефолтного.
Правда работают в программе тетеньки лет 50-ти на бюджетных компьютерах (на которых само собой стоит ХР), но все равно, неприятно
>> No. 5372    
OleDbCommand UpdateComm = new OleDbCommand("update patient set open_date=@date1, close_date=@date2 where id=@patid", FL.MainConn);
//далее добавляем эти самые параметры
try
{
if (UpdateComm.ExecuteNonQuery() > 0)
progressBarImport.PerformStep();
}
catch
{
ErCount++;
}

А теперь вопрос - ErCount в конце так и не изменился (т.е. никаких ошибок не было) но и изменений никаких не произошло (и прогресс бар тоже не сдвинулся)
>> No. 5373    
>>5372
Как ты определил, что изменений никаких не произошло? Возможно, они просто не успели сохраниться на диск.
>> No. 5376    
>>5372
У тебя ошибка в логике, результат ExecuteNonQuery() может быть <= 0 и не кинуть исключение,
тогда прогресс бар не сдвинется и ErrCount не изменится.
>> No. 5388    
>>5376
если бы ExecuteNonQuery() возвращало 0, но при этом производила изменения, то и проблем бы не было.

Проблему так и не решил, исходную задачу решил другим путем
>> No. 5397    
Файл: 13177976185.png-(485.30KB, 664x861, 1313023411491.png)
5397
продолжаю мучить(ться)базы данных
Есть 500-метровая база в dbf, созданная в Visual Fox Pro (скорее всего). Базу делал не я, и обновляю ее тоже не я, но с ней нужно работать

Как делать выборку я вроде бы разобрался, теперь главный вопрос - как повысить скорость поиска в этом монстре? Гугл подсказывает - нужно проиндексировать по поисковым столбцам. Как это делать в условиях .NET я пока не разобрался
[Назад]


Удалить сообщение []
Пароль  
[Mod]