powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Чет непойму
8 сообщений из 8, страница 1 из 1
Чет непойму
    #38924582
sanekoffice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class PK
{
    decimal? Value ;
}

void SetNewPKs
{
    (Tag as List<Blank>).ForEach(x => SetNewPK(x)); // на выходе все  b.PK.Value одинаковы :(        
}
void SetNewPK(Blank b)
{
    // манипуляции с b.PK.Value  - значения получаю самые разные
     return;            
}
...
Рейтинг: 0 / 0
Чет непойму
    #38924592
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanekoffice, покажите код класса Blank и как заполняется список бланков.
...
Рейтинг: 0 / 0
Чет непойму
    #38924613
sanekoffice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAsanekoffice, покажите код класса Blank и как заполняется список бланков.

skyANA,
Даже не знаю что еще тут показать

Код: 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.
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.
 /// <summary>
    /// Заготовка
    /// </summary>
    public class Blank : EntityBase
    {
        #region Fields and Proporties

        public int IdRecord { get; set; }
        /// <summary>
        /// Размер сечения
        /// </summary>
        public string SizeSection { get; set; }
        /// <summary>
        /// Масса слитка
        /// </summary>
        public decimal Mass { get; set; }
        /// <summary>
        /// Получено
        /// </summary>
        public int? InputPieces { get; set; }
        /// <summary>
        /// Примечание
        /// </summary>
        public string Note { get; set; }
        /// <summary>
        /// Дата создания
        /// </summary>
        public DateTime Date { get; set; }
        /// <summary>
        /// Номер смены
        /// </summary>
        public Nullable<int> ShiftNumber { get; set; }
        /// <summary>
        /// Длинна
        /// </summary>
        public string Length { get; set; }
        /// <summary>
        /// Расходный коэф.
        /// </summary>
        public TypeРК TypeРК { get; set; }
        /// <summary>
        /// Карта плавки
        /// </summary>
        public CardMelting CardMelting { get; set; }
        /// <summary>   
        /// Направление
        /// </summary>
        public BlankType BlankType { get; set; }
        /// <summary>   
        /// Утверждено
        /// </summary>
        public Approve Approve { get; set; }
        /// <summary>
        /// Собственность
        /// </summary>
        public Ownership Ownership { get; set; }
        /// <summary>
        /// Родительская таблица
        /// </summary>
        public string ParentTable { get; set; }
        /// <summary>
        /// Номер
        /// </summary>
        public int? Number { get; set; }

        /// <summary>
        /// Профиль
        /// </summary>
        public Profile Profile { get; set; }

        #endregion

        #region Methods

        public void ReplaceMe(Blank from)
        {
            this.Approve = from.Approve;
            this.BlankType = from.BlankType;
            this.CardMelting = from.CardMelting;
            this.Date = from.Date;
            this.Id = from.Id;
            this.Length = from.Length;
            this.Mass = from.Mass;
            this.Note = from.Note;
            this.Ownership = from.Ownership;
            this.ShiftNumber = from.ShiftNumber;
            this.SizeSection = from.SizeSection;
            this.TypeРК = from.TypeРК;
            this.InputPieces = from.InputPieces;
            this.Number = from.Number;
            this.IdRecord = from.IdRecord;
            this.ParentTable = from.ParentTable;
            this.Profile = from.Profile;
        }
        #endregion
    }


void SetNewPK(Blank b)
        {
               b.TypeРК = _allTypesРК.Find(x => x.Id == 8); // проставим тип
                
                switch (b.BlankType.Id)
                { 
                    case 1 :
                        if (b.CardMelting != null && b.Profile != null)
                            b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(null, null, b.Profile.Id, b.Date, b.CardMelting.Steel.Id);
                        else
                            b.TypeРК.Value = null;
                        break;
                    
                    case 2 :
                    case 3 :
                        b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(null, null, null, b.Date, b.CardMelting.Steel.Id);
                        break;

                    case 4 :
                        b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(52, 15, null, b.Date, b.CardMelting.Steel.Id);
                        break;
                }
                
                // Проставить подгруженное PK по-умолчанию в текстбокс
                if (_editFormat == EditFormats.One)
                    txtTypePKValue.Text = (b.TypeРК.Value.HasValue) ? b.TypeРК.Value.ToString() : "";
            }
            return;   
        }
...
Рейтинг: 0 / 0
Чет непойму
    #38924632
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanekofficeskyANAsanekoffice, покажите код класса Blank и как заполняется список бланков.

skyANA,
Даже не знаю что еще тут показатьразве я непонятно выразился?

Как заполняется список бланков? ReplaceMe при этом вызывается?
...
Рейтинг: 0 / 0
Чет непойму
    #38924683
sanekoffice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
В общем просматриваю Tag и вижу что все позиции меняются скачком уже здесь между присвоением и break. Меняю одну а они всей кучей сразу меняются.

Код: c#
1.
2.
b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(null, null, null, b.Date, b.CardMelting.Steel.Id);
                        break;


Код: 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.
  public decimal? GetDefaultPKValue(int? OID_SubWorkCenter, int? OID_SubOperation, int? idProfile, DateTime dateBegin, int idSteel)
        {
            decimal? result = null;

            SqlCommand cmd = CreateCommand(StProcs.GetDefaultPK);

            cmd.Parameters.Add(Parametrs.dateBegin).Value = dateBegin;
            cmd.Parameters.Add(Parametrs.idSteel).Value = idSteel;

            if (idProfile.HasValue)
                cmd.Parameters.Add(Parametrs.idProfile).Value = idProfile;

            if (OID_SubWorkCenter.HasValue)
                cmd.Parameters.Add(Parametrs.OID_SubWorkCenter).Value = OID_SubWorkCenter;

            if (OID_SubOperation.HasValue)
                cmd.Parameters.Add(Parametrs.OID_SubOperation).Value = OID_SubOperation;
            
            OpenConnection();
            SqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            if (!reader.IsDBNull(reader.GetOrdinal("Value"))) 
                result = reader.GetDecimal(0);
            CloseConnection();
            return result;
        }
...
Рейтинг: 0 / 0
Чет непойму
    #38924985
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
void SetNewPK(Blank b)
{
b.TypeРК = _allTypesРК.Find(x => x.Id == 8) ; // проставим тип - Здесь беда - насрать какой бланк пришел - ставим ему один и тот же тип.

switch (b.BlankType.Id) // как писал выше раз типы одинаковые - получите одинаковое значение своего валью
{
case 1 :
if (b.CardMelting != null && b.Profile != null)
b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(null, null, b.Profile.Id, b.Date, b.CardMelting.Steel.Id);
else
b.TypeРК.Value = null;
break;

case 2 :
case 3 :
b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(null, null, null, b.Date, b.CardMelting.Steel.Id);
break;

case 4 :
b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(52, 15, null, b.Date, b.CardMelting.Steel.Id);
break;
}

// Проставить подгруженное PK по-умолчанию в текстбокс
if (_editFormat == EditFormats.One)
txtTypePKValue.Text = (b.TypeРК.Value.HasValue) ? b.TypeРК.Value.ToString() : "";
}
return;
}
...
Рейтинг: 0 / 0
Чет непойму
    #38924997
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanekofficeskyANA,
В общем просматриваю Tag и вижу что все позиции меняются скачком уже здесь между присвоением и break. Меняю одну а они всей кучей сразу меняются. - Не там роете. Как я уже написал выше - для всех бланков присваивается один и тот же instance TypePK. Если не поняли - все ваши разные объекты бланк, ссылаются на один и тот же объект TypePK.



Код: c#
1.
2.
b.TypeРК.Value = new SqlDataAdapterTypesPK(Global.GlobalSettings.Connection).GetDefaultPKValue(null, null, null, b.Date, b.CardMelting.Steel.Id);
                        break;


Код: 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.
  public decimal? GetDefaultPKValue(int? OID_SubWorkCenter, int? OID_SubOperation, int? idProfile, DateTime dateBegin, int idSteel)
        {
            decimal? result = null;

            SqlCommand cmd = CreateCommand(StProcs.GetDefaultPK);

            cmd.Parameters.Add(Parametrs.dateBegin).Value = dateBegin;
            cmd.Parameters.Add(Parametrs.idSteel).Value = idSteel;

            if (idProfile.HasValue)
                cmd.Parameters.Add(Parametrs.idProfile).Value = idProfile;

            if (OID_SubWorkCenter.HasValue)
                cmd.Parameters.Add(Parametrs.OID_SubWorkCenter).Value = OID_SubWorkCenter;

            if (OID_SubOperation.HasValue)
                cmd.Parameters.Add(Parametrs.OID_SubOperation).Value = OID_SubOperation;
            
            OpenConnection();
            SqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            if (!reader.IsDBNull(reader.GetOrdinal("Value"))) 
                result = reader.GetDecimal(0);
            CloseConnection();
            return result;
        }
...
Рейтинг: 0 / 0
Чет непойму
    #38925102
sanekoffice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого.Ну это мне бонус конечно - такую куйню сделать и потом пол дня рожать решение.
Стыдно :(

А Вам большое спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Чет непойму
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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