Проверка силы на связанных элементах управления в WPF

У вас есть несколько проблем.

Во-первых, у вас есть два предложения WHERE, когда у вас может быть только одно (хотя в подзапросе может быть предложение where). ГДЕ ожидает от выражения выражение true или false (1 или больше или 0), вы можете использовать AND или OR для получения результата true или false из двух результатов, поэтому вам следует использовать

 WHERE result_of_expression AND result_of_the_other_expression

или ГДЕ result_of_expression И result_of_the_other_expression

Вторая проблема заключается в том, что вы затем пытаетесь использовать подзапрос. Подзапрос должен быть заключен в круглые скобки ( в начале и ) в конце.

Третья проблема заключается в том, что EXIST - это не ключевое слово, это EXISTS .

Так что выше может быть: -

String updt = "UPDATE " + TABLE_NAME4 + 
    " SET " + COLUMN_TAKEAWAY_PK_COST + " = ( " +  //<<<<<<<<<< OPEN PARENTHESIS FOR SUBQUERY
    " SELECT  " + COLUMN_PACK_COST +
    " FROM " + TABLE_NAME6 +
    " WHERE " +COLUMN_PACK_TYPE+" = " + COLUMN_TAKEAWAY_PK_TYPE +
    " AND EXISTS " + //<<<<<<<<<< AND INSTEAD OF WHERE and EXISTS INSTEAD OF EXISTS
    "(" + //<<<<<<<<<< OPEN PARENTHESIS FOR SUB-SUBQUERY
    " SELECT * " +
    " FROM " + TABLE_NAME6 +
    " WHERE " + COLUMN_PACK_TYPE + " = " + COLUMN_TAKEAWAY_PK_TYPE + 
    " ) " + //<<<<<<<<<< CLOSE PARENTHESIS FOR SUB-SUBQUERY
    ")" //<<<<<<<<<<< CLOSE PARENTHESIS FOR SUBQUERY
    );  
  • Обратите внимание, что приведенный выше является принципиальным кодом
    • , он не обязательно отражает желаемые результаты, так как это не может быть определено
    • [1126 ] скорее он пытается уточнить синтаксис, который можно использовать
    • он не был проверен, поэтому он может содержать ошибки

Согласно вашему комментарию Вы хотели менее сложный запрос согласно: -

String updatePack = "UPDATE FP_Master SET TakeAwayPkCost = (SELECT Pack_Cost FROM Take_Away_Pack_Details WHERE Pack_Type = TakeAwayPkType)"; 

56
задан raven 30 April 2010 в 18:14
поделиться

2 ответа

У нас есть эта проблема в нашем приложении также. Проверка только стреляет, когда привязка обновляет, таким образом, необходимо обновить их вручную. Мы делаем это в событии Loaded Окна :

public void Window_Loaded(object sender, RoutedEventArgs e)
{
    // we manually fire the bindings so we get the validation initially
    txtName.GetBindingExpression(TextBox.TextProperty).UpdateSource();
    txtCode.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}

Это сделает ошибочный шаблон (красная схема) появляются и устанавливают Проверка. Свойство HasError, которое у нас есть инициирование кнопки OK для отключения:

<Button x:Name="btnOK" Content="OK" IsDefault="True" Click="btnOK_Click">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="IsEnabled" Value="false" />
            <Style.Triggers>
                <!-- Require the controls to be valid in order to press OK -->
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding ElementName=txtName, Path=(Validation.HasError)}" Value="false" />
                        <Condition Binding="{Binding ElementName=txtCode, Path=(Validation.HasError)}" Value="false" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsEnabled" Value="true" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
63
ответ дан Robert Macnee 26 November 2019 в 17:12
поделиться

В 3.5SP1 / 3.0SP2, они также добавили новое свойство к основе ValidationRule, а именно, ValidatesOnTargetUpdated = "Верный" . Это назовет проверку, как только исходный объект связывается, а не только когда целевое управление обновляется. Это не может быть точно, что Вы хотите, но это не плохо для наблюдения первоначально всего материала, который необходимо зафиксировать.

Работы что-то вроде этого:

<TextBox.Text>
    <Binding Path="Amount" StringFormat="C">
        <Binding.ValidationRules>
            <validation:RequiredValidationRule 
                ErrorMessage="The pledge amount is required." 
                ValidatesOnTargetUpdated="True"  />
            <validation:IsNumericValidationRule 
                ErrorMessage="The pledge amount must be numeric." 
                ValidationStep="ConvertedProposedValue" 
                ValidatesOnTargetUpdated="True"  />
        </Binding.ValidationRules>
    </Binding>
</TextBox.Text>
69
ответ дан Ken Smith 26 November 2019 в 17:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: