powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
25 сообщений из 406, страница 16 из 17
Исключения vs коды возвратов
    #39676017
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевПопытка решения в лоб - ищется группа извещений, время которых меньше заданного, а группе ищутся с максимальным временем - оказалась не состоятельной. Задача перешла из режима отчетного документа в интерактивный режим. А здесь присутствует фактор времени. Десятки минут не катят.
Пока ничего лучшего не придумал, кроме как строить в дополнительной таблицы временные срезы и извещения выбирать не из всего множества, а из диапазона между срезом и заданной датой.

Я буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать.
А в чём проблема-то? Хранимка медленно отрабатывает?
Показывайте структуру таблиц и толком объясните задачу.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676059
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 09:01 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583428] [21583428]
>Иначе задам вопрос: разве может случиться так, что lst_Entity будет null в момент вызова метода Add?
Да. У меня хранимые процедуры, реализующие INSERT, UPDATE, DELETE возвращают выборку из одной строки - список не нужен.
Пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    private async void fun_Ins() { 
      гп.bl_Разрешение = false;
      
      xrow = null;  lst_Entity = null;
      //-- Готовим параметр запроса
      asp = new OracleParameter[4] {
        new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
        new OracleParameter("xnom_inspek", yrow.str_НомИнспек),
        new OracleParameter("xdt_inspek", yrow.dt_Инспек),
        new OracleParameter("xfk_AON", yrow.fk_АОН)
      };
      //-- Запись в таблицу
      при.tmrStart(); await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Trassi_Ins", wsp.sp_Ins, asp, RowToEntity)); при.tmrStop();
      if (wsp.wspErr != null) MessageBox.Show(wsp.wspErr, caption_Entity, MessageBoxButton.OK);

      if (xrow != null) {
        xrow.chb_Entity = true;
        oc_Entity.Add(xrow);
        iRow = oc_Entity.IndexOf(xrow);
        dgv_Entity.ScrollIntoView(xrow);
        dgv_Entity.SelectedIndex = iRow;
      }
     . . .


lst_Entity может принимать значение null, ссылки на пустой список, ссылки на заполненный список.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676071
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 09:10 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583444][21583444]
>А в чём проблема-то? Хранимка медленно отрабатывает?
Да.
Если интересно, то см. здесь , здесь и здесь .
Структуру всех таблиц для построения нужной мне выборки по извещениям я не знаю. Контора сопровождает инфосистему, сделанную другими. Код ХР подсмотрели у тех, кто до нас.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676090
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 09:01 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583428] [21583428]
>Иначе задам вопрос: разве может случиться так, что lst_Entity будет null в момент вызова метода Add?
Да. У меня хранимые процедуры, реализующие INSERT, UPDATE, DELETE возвращают выборку из одной строки - список не нужен.
Пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    private async void fun_Ins() { 
      гп.bl_Разрешение = false;
      
      xrow = null;  lst_Entity = null;
      //-- Готовим параметр запроса
      asp = new OracleParameter[4] {
        new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
        new OracleParameter("xnom_inspek", yrow.str_НомИнспек),
        new OracleParameter("xdt_inspek", yrow.dt_Инспек),
        new OracleParameter("xfk_AON", yrow.fk_АОН)
      };
      //-- Запись в таблицу
      при.tmrStart(); await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Trassi_Ins", wsp.sp_Ins, asp, RowToEntity)); при.tmrStop();
      if (wsp.wspErr != null) MessageBox.Show(wsp.wspErr, caption_Entity, MessageBoxButton.OK);

      if (xrow != null) {
        xrow.chb_Entity = true;
        oc_Entity.Add(xrow);
        iRow = oc_Entity.IndexOf(xrow);
        dgv_Entity.ScrollIntoView(xrow);
        dgv_Entity.SelectedIndex = iRow;
      }
     . . .



lst_Entity может принимать значение null, ссылки на пустой список, ссылки на заполненный список.
Мда, как же всё у Вас прибито гвоздями...
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676093
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 09:10 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583444][21583444]
>А в чём проблема-то? Хранимка медленно отрабатывает?
Да.
Если интересно, то см. здесь , здесь и здесь .
Структуру всех таблиц для построения нужной мне выборки по извещениям я не знаю. Контора сопровождает инфосистему, сделанную другими. Код ХР подсмотрели у тех, кто до нас.
Если Вы за два года ни структуры, ни плана, ни индексов не узнали, то боюсь Вам не помочь.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676102
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

всё сидите на Oracle 8i? изменения в БД идут исключительно через хранимки?
свои объекты в БД создавать есть возможность? изменять хранимые процедуры?

если да, то смотрите в сторону денормализации... летать будет всё со страшной силой
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676121
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня,
>10:41 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21584048][21584048]
>Мда, как же всё у Вас прибито гвоздями…
Интересно, видим одно и тоже - выводы делаем диаметрально противоположные. Я стремился создать одну гибкую конструкцию обработки выборки из ХП, Вы же на каждый чих создаёте класс, что чуждо для меня.
Например, как формирую извещения для крайнего изменения состояния объектов:
Код: 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.
       . . . 
       else { //-- Крайний срез существует
          //-- Загружаем параметры крайнего среза 
          lst_Entity = null; lst_Entity = new List<row_Entity>();
          asp = new OracleParameter[2] {
            new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
            new OracleParameter("x_datesre", dt_srez_old)
          };
          await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Srez_Sel", wsp.sp_Sel, asp, RowToEntitySre));
          if (wsp.wspErr != null) goto mp1;

          //-- Загружаем макс. по времени извещения после крайнего среза в уже имеющийся список сущностей
          asp = new OracleParameter[3] {
            new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
            new OracleParameter("x_dt_srez_new", dt_srez_new),
            new OracleParameter("x_dt_srez_old", dt_srez_old)
          };
          await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Srez_Dop", wsp.sp_Sel, asp, RowToEntityIzv2));
          if (wsp.wspErr != null) goto mp1;
        }
      }
      //-- Покажем выборку
      if (lst_Entity != null) {
        //-- Сортируем список
        lst_Entity = lst_Entity.OrderBy(x => x.mesto).ThenByDescending(x => x.rn).ThenBy(x => x.pk).ToList();
        oc_Entity = new ObservableCollection<row_Entity>(lst_Entity);
        lst_Entity = null;
        dgv_Entity.ItemsSource = oc_Entity;
       . . . 
    private void RowToEntitySre(IDataRecord record) {
      xrow = new row_Entity() {. . . };
      lst_Entity?.Add(xrow);
    }
    private void RowToEntityIzv2(IDataRecord record) {
      xrow = new row_Entity() { . . . };
      //-- Сушность xrow.рк есть в списке?
      int i = lst_Entity.FindIndex((x => x.pk == xrow.pk));
      if (i == -1)  lst_Entity.Add(xrow);  //--Нет
      else if(xrow.dateizm > lst_Entity[i].dateizm) { lst_Entity.RemoveAt(i); lst_Entity.Add(xrow); }   //--Есть
    }
    . . .
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676137
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

этот rowEntity нафиг никому не нужен вовсе
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676138
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевВы же на каждый чих создаёте класс, что чуждо для меня

Что-то вас не парит использования классов, созданных «на каждый чих», из библиотек .NET.
Вы просто не хотите ничему учиться, уже скоро год пройдёт, как вы копируете одни и те же
тексты с плохим кодом, и все советы и рекомендации прошли мимо. Просто тратите чужое время.
Зачем?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676148
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttуже скоро год пройдёт, как вы копируете одни и те же
тексты с плохим кодом, и все советы и рекомендации прошли мимо. Просто тратите чужое время.
Зачем?
не спрашивай. Бесполезно.
Я не понимаю зачем эту тему опять подняли.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676152
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

и в чём же гибкость?

У Вас интерфейс гвоздями прибит к базе Oracle и логика с ними перемешана.
Понадобится что-то качественно изменить и фигушки. Скажете, что это не предполагалось и надо всё переписывать.
Тупо вызвать хранимку без параметров и возвращающую NUMBER вместо курсора Ваша конструкция уже не позволяет.

А гибкость - это быстрая и лёгкая реакция на новые требования.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676153
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

этот rowEntity нафиг никому не нужен вовсеДа там весь проект на фиг никому не нужен.
Было бы иначе, то давно бы всплыли очевидные косяки архитектуры.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676253
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 12:35 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21584720][21584720]
>...У Вас интерфейс гвоздями прибит к базе Oracle и логика с ними перемешана…
Вы не правы:
Код: 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.
namespace ns_Хранилище {
  public partial class uc_Пользователи : UserControl, I_Плитка {
    Guid pk_Guid;
    ObservableCollection<row_Entity> oc_Entity=new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    row_Entity xrow, yrow;
    SqlDataReader reader;
    SqlParameter[] asp;
  . . .
  public class row_Entity {. . .};
  . . . 
  public uc_Пользователи(MainWindow omw, Object oUC) {
    InitializeComponent();
  . . .
    lst_Entity = null;  lst_Entity = new List<row_Entity>();
    //-- Готовим параметры запроса
    asp = new SqlParameter[3];
    asp[0] = new SqlParameter("@pk_Entity", pk_Guid);

    string xstr = tbx_Псевдоним.Text.Trim();
    if (xstr != "") xstr += "%";
    asp[1] = new SqlParameter("@str_Псевдоним", xstr) ;

    xstr = tbx_ФИО.Text.Trim();
    if (xstr != "") xstr += "%";
    asp[2] = new SqlParameter("@str_ФИО", xstr);

    при.tmrStart(); try { await wsp.Entity_SP("au_Пользователи_Sel", wsp.sp_Sel, asp, RowToEntity); }
    catch (System.InvalidOperationException ex) {. . . 
    catch (Exception ex) {. . .
    . . .
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676260
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

и что Вы показали? Это то же приложение, но работающее вдруг с SQL Server? Нет.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676263
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

уберите
Код: c#
1.
using Devart.Data.Oracle;


уберите
Код: c#
1.
using System.Data.SqlClient;


будет интерфейс работать? нет... прибит гвоздями

а гибкость - это кода уровню представления не важно то, из какого хранилища прилетают данные
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676289
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAа гибкость - это кода уровню представления не важно то, из какого хранилища прилетают данные

Суть ещё только в том, чтобы иметь возможность заменить источник данных.
Архитектура, которая это позволяет, может решать и другой спектр задач,
кеширование, профилирование, вешать аспекты, аудит и многое другое.

Естественно, судя по приведённым кускам кода, об этом даже нельзя и мечтать.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676571
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAа гибкость - это кода уровню представления не важно то, из какого хранилища прилетают данные

Суть ещё только в том, чтобы иметь возможность заменить источник данных.В двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт.
hVosttАрхитектура, которая это позволяет, может решать и другой спектр задач,
кеширование, профилирование, вешать аспекты, аудит и многое другое.

Естественно, судя по приведённым кускам кода, об этом даже нельзя и мечтать.В двухзвенке это решается средствами СУБД - profiler, triggers и т. п.

Мне тоже не нравятся показанные примеры кода. Но они решают поставленную задачу, никакие требования не нарушены, значит претензий быть не может.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676572
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAесли да, то смотрите в сторону денормализации... летать будет всё со страшной силойНо и проблем с обеспечением целостности данных добавится...
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676576
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт.
С чего бы это? Делается отдельный класс для взаимодействия с бд, суть которого - исключительно чтение/запись данных, и никакой прикладной логики внутри. Из класса экстрактится интерфейс, класс по этому интерфейсу инжектится в классы, реализующие прикладную логику. При необходимости смены БД пишется новый класс для новой БД с тем же интерфейсом, инжектится вместо старого. Всё это прекрасно работает на двухзвенке. Ну, разумеется, если программа написана так, что данные из БД сразу пихаются в гуй, и в нем же и обрабатываются, то тогда да, уже мало что поможет.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676579
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАлексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт.
С чего бы это? Делается отдельный класс для взаимодействия с бд, суть которого - исключительно чтение/запись данных, и никакой прикладной логики внутри. Из класса экстрактится интерфейс, класс по этому интерфейсу инжектится в классы, реализующие прикладную логику. При необходимости смены БД пишется новый класс для новой БД с тем же интерфейсом, инжектится вместо старого. Всё это прекрасно работает на двухзвенке. Ну, разумеется, если программа написана так, что данные из БД сразу пихаются в гуй, и в нем же и обрабатываются, то тогда да, уже мало что поможет.Да, обращение к БД в коде клиента лучше вынести в репозитарий, кто ж спорит. Но прикладную логику разумно располагать на сервере. В двухзвенке для этого используются средства СУБД - stored proc, view и т. п. А в этом случае хоть как ты организуй код на клиенте, серверную часть при смене СУБД придётся переделывать.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676582
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВ двухзвенке для этого используются средства СУБД - stored proc, view и т. п. А в этом случае хоть как ты организуй код на клиенте, серверную часть при смене СУБД придётся переделывать.
А такое и в трехзвенке бывает, когда критичные к быстродействию куски прикладной логики выносятся в БД.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676624
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАлексей КВ двухзвенке для этого используются средства СУБД - stored proc, view и т. п. А в этом случае хоть как ты организуй код на клиенте, серверную часть при смене СУБД придётся переделывать.
А такое и в трехзвенке бывает, когда критичные к быстродействию куски прикладной логики выносятся в БД.Да, но сейчас речь не об этом.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676693
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт.

Двухзвенка это прошлый век.

Алексей КВ двухзвенке это решается средствами СУБД - profiler, triggers и т. п.

Т.е. костыли и приплясывания с бубном. Да и пофигу, прошлый век и совершенно не интересно.

Алексей КМне тоже не нравятся показанные примеры кода. Но они решают поставленную задачу, никакие требования не нарушены, значит претензий быть не может.

Ещё неизвестно решают ли. Или так хочет думать автор.
Некоторые лечатся уринотерапией и искренне верят, что помогает.
Тогда вроде как можно сказать тоже самое, что сказал ты.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676711
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт.

Двухзвенка это прошлый век.И что? Предлагаешь все существующие проекты переписать на трёхзвенку?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39676716
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Ещё неизвестно решают ли. Или так хочет думать автор.
Некоторые лечатся уринотерапией и искренне верят, что помогает.
Тогда вроде как можно сказать тоже самое, что сказал ты.Тебе нужны копии актов сдачи проекта в промышленную эксплуатацию?
...
Рейтинг: 0 / 0
25 сообщений из 406, страница 16 из 17
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]