Проблемы с обновлением MySQL и Access

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

  1. Класс должен быть помечен как final
  2. Все поля должны быть приватными и final
  3. Заменить сеттеры конструктором (для присвоения значения переменной).

Давайте взглянем на то, что мы набрали выше:

//ImmutableClass
package younus.attari;

public final class ImmutableExample {

    private final String name;
    private final String address;

    public ImmutableExample(String name,String address){
        this.name=name;
        this.address=address;
    }


    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

}

//MainClass from where an ImmutableClass will be called
package younus.attari;

public class MainClass {

    public static void main(String[] args) {
        ImmutableExample example=new ImmutableExample("Muhammed", "Hyderabad");
        System.out.println(example.getName());

    }
}
0
задан June7 28 February 2019 в 20:17
поделиться

1 ответ

Хотя нет воспроизводимого примера, который бы помог в вашей конкретной ситуации, рассмотрите возможность выполнения запросов чистого SQL UPDATE с привязанными параметрами. Ваша условная логика для области может быть переписана во вложенное выражение IIF. Возможно, это упростит вашу проблему и оптимизирует ваши потребности без DLookup или нескольких обновлений набора записей. Кроме того, переназначение RowSource не требуется. Ниже используется параметризация, которая рекомендуется при запуске SQL на уровне приложений:

SQL (сохраните оба ниже как запросы Access)

  1. mySavedJoinUpdateQuery

    PARAMETERS Text33Param Text(255), Text35Param Text(255)
               Text37Param Text(255), JobNumberParam Text(255);
    UPDATE [To_Do] d
    INNER JOIN [Job Route] r
    ON d.Job_Number = r.Job_Number
    
    SET [Area] = IIF([Current] = 1 AND [Area2] != '---', [Area2], 
                     IIF([Current] = 2 AND [Area3] != '---', [Area3], 
                         IIF([Current] = 3 AND [Area4] != '---', [Area4], [Area1)
                     )
                 ),
        [Person_In_Charge] = Text33Param,
        [Equipment] = Text37Param,
        [Description] = Text35Param
    
    WHERE r.[Job Number] = JobNumberParam;
    
  2. mySavedSimpleUpdateQuery

    PARAMETERS JobNumberParam Text(255);
    UPDATE [Job Route] r
    SET r.[Current] = r.[Current] + 1
    WHERE r.[Job Number] = JobNumberParam;
    

VBA

Private Sub moveJob2_Click()
   Dim qdef As QueryDef
   Dim selectParas As String

   ' UPDATE JOIN QUERY
   Set qdef = CurrentDb.QueryDefs("mySavedJoinUpdateQuery")

   qdef!JobNumberParam = Text31
   qdef!Text33Param = Text33
   qdef!Text35Param = Text35
   qdef!Text37Param = Text37

   qdef.Execute dbFailOnError 
   Set qdef = Nothing

   ' UPDATE SIMPLE QUERY
   Set qdef = CurrentDb.QueryDefs("mySavedSimpleUpdateQuery")

   qdef!JobNumberParam = Text31   
   qdef.Execute dbFailOnError 
   Set qdef = Nothing

   ' REQUERY LIST BOXES
   listRemoveJobs.Requery
   listChangeJobArea.Requery
End Sub
0
ответ дан Parfait 28 February 2019 в 20:17
поделиться
Другие вопросы по тегам:

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