表单 - 数据验证以停止重复预订访问

时间:2015-09-01 16:45:47

标签: ms-access access-vba ms-access-2007

我遇到了解决以下问题的问题:

我有预订表格,但是当用户添加详细信息时,我想检查我的数据库,看看确切的车辆是否已经预订了这些日期。如果有,则会显示错误消息。

2 个答案:

答案 0 :(得分:1)

您的车辆应有身份证号码。因此,当用户尝试预订车辆时,您会根据预订车辆的表格检查ID。像这样的东西(空气码)应该有效:

Dim db as Database
Dim rec as Recordset

Set db = CurrentDB
Set rec = db.OpenRecordset ("SELECT CarID FROM tblBookedCars WHERE CarID = " & Me.cboCarsToBook.Selected & "")

If rec.EOF Then
  'Your car isn't booked, so process your booking
Else
  Msgbox "That car is already booked"
End If

答案 1 :(得分:1)

假设已预订的汽车有开始和结束日期,则在以下情况下发生预订碰撞:

RequestStartDate< = EndDate 和 RequestEndDate> = StartDate

以上是一个相当简单的查询,但如果发生任何冲突,上面的内容将返回记录,而您根本不允许预订。这意味着您不必维护一些巨大的“杂乱”汽车表和汽车预订的每个日期。您只需要在开始和结束日期附加到给定车辆的简单行(因此很容易更改日期 - 您只更新一个预订报告。

构建此类查询的Air代码看起来很像:

interface DogLike {
    void bark();
}

interface CatLike {
    void meow();
}

class Dog implements DogLike {
    @Override
    public void bark() {
        System.out.println("Woof");
    }
}

interface MoreauMachine {
    <H extends DogLike & CatLike > H createHybrid();
}

class MalfunctioningDogCatFactory implements MoreauMachine {

    @Override
    public DogLike createHybrid() {
        //Compile with -Xlint:unchecked to see a warning here:
        //Warning:(84, 20) java: createHybrid() in org.cumberlw.viewtest.MalfunctioningDogCatFactory implements <H>createHybrid() in org.cumberlw.viewtest.MoreauMachine
        //return type requires unchecked conversion from org.cumberlw.viewtest.DogLike to H
        return new Dog();
    }

    public static void main(String[] args) {
        MoreauMachine factory = new MalfunctioningDogCatFactory();

        //crashes!
        //Exception in thread "main" java.lang.ClassCastException: org.cumberlw.viewtest.Dog cannot be cast to org.cumberlw.viewtest.CatLike
        factory.createHybrid().meow();
    }
}

上面只是一个例子,我相信你会建立一个很好的表格,提示用户预订日期。但是,这里很好的是上面的简单查询将返回任何冲突。