Member 14114251 Ответов: 2

У меня есть проблема с методом проверки, где он проверяет десятичные значения в приложении C# .NET


Может ли кто-нибудь помочь мне, пожалуйста, я работаю над C#.net приложение у меня есть метод для проверки десятичных значений, прежде чем вставить его в таблицу, которая имеет столбец типа float в моей базе данных. Вот метод, приведенный ниже:
public static bool validateFields(TextBox txtBox)
	{
		if(txtBox.Text != "")
		{
			double result = 0.0;
			if(!double.TryParse(txtBox.Text, out result))
			{
				return false;
			}
		}
		return true;
	}

Моя задача сейчас заключается в том, когда я захватываю запись этого формата ’R12.20’ или обновляю запись, которая уже находится на столе, когда нажимаю метод проверки, где проверяется, является ли значение двойным или нет, это дает мне ошибку проверки.
я хупаю, что ясно объясняю этот вызов вызовом.

Что я уже пробовал:

Когда я попробовал метод ниже с помощью “NumberStayes” и InvariantCulture или CurrentCulture, а также изменил тип данных на десятичный в методе, центы на записи заменили, как R12.20, когда я сохраняю его сохранить, как 12.00, и я снова обновляю запись, сохраненную как R1200.00, ее продолжают увеличивать
public static bool validateFields(TextBox txtBox)
    {
        if (txtBox.Text != "")
        {
          
            decimal result = 0;
            NumberStyles styles = (NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands);
            if (!decimal.TryParse(txtBox.Text.Replace(" ", ""), styles, CultureInfo.CurrentCulture, out result))
            {
                return false;

            }


        }
        return true;
    }

2 Ответов

Рейтинг:
0

OriginalGriff

На первый взгляд - и это все, что можно сделать из вашего описания - ваши данные хранятся неправильно, и вам нужно изменить макет БД.
Если существующие данные в вашей БД имеют значение "R12.20", то они хранятся в столбце VARCHAR или NVARCHAR, а не в числовом формате (INT, FLOAT, DECIMAL), и данные в вашей БД недопустимы как значение с плавающей запятой (или двойное) в C#.
Если вы попытаетесь разобрать и строку, содержащую буквенные Буквы в качестве двойного значения, вы получите возврат "плохого числа" из TryParse - и правильно. "R12.20" не является двойным значением, "12.20" может быть.

Поэтому начните с изменения вашей базы данных и замены текстового столбца на числовой, а также преобразования значений заново, исправляя ошибки по ходу работы. всегда храните значения в наиболее подходящем типе данных, а не просто используйте строки, потому что "это легко".
Если вы не исправите БД, эта проблема будет возникать снова и снова.


Member 14114251

Спасибо за Ваше объяснение, хотя я думаю, что есть что-то, что я не уточнил правильно значение, которое захватывается на форме, не похоже на это R12.10 его как 12.10 R добавляется на форму кодом для просмотра на форме, когда использование хочет проверить или проверить информацию.
то, что я хочу, чтобы мне помогли, - это проверить, есть ли какой-либо способ манипулировать методом проверки, чтобы он мог позволить мне вставлять или обновлять значения, такие как 12.10 в таблице, а не текст, и не увеличивать значение при обновлении других значений.

Рейтинг:
0

Member 14114251

Спасибо за Ваше объяснение, хотя я думаю, что есть что-то, что я не уточнил правильно значение, которое захватывается на форме, не похоже на это R12.10 его как 12.10 R добавляется на форму кодом для просмотра на форме, когда использование хочет проверить или проверить информацию.
то, что я хочу, чтобы мне помогли, - это проверить, есть ли какой-либо способ манипулировать методом проверки, чтобы он мог позволить мне вставлять или обновлять значения, такие как 12.10 в таблице, а не текст, и не увеличивать значение при обновлении других значений.