@GoldMan240

Как сделать выбор номеров телефона по id абонента в таблице?

Есть 2 таблицы: ЗВОНКИ и АБОНЕНТЫ. Во второй указывается id_абонента, его ФИО и номер телефона, а в первой, id_звонка, id_абонента (т.е. нужно выбрать), номер телефона абонента (нужно выбрать, но нужно как-то отфильтровать, чтобы выбор был возможен лишь если id_абонента в таблице ЗВОНКИ совпадал с id_абонента в таблице АБОНЕНТЫ). Вот как у меня работает добавление таблицы сейчас:
def addTable(i):
    if i == 1:
        TableName = "Callers";
        ColNames = ["ФИО", "Номер телефона"];
        ColWidth = [300, 300];
    elif i == 2:
        TableName = "Calls";
        ColNames = ["Абонент", "Номер абонента"];
        ColWidth = [300, 300];

    global stm;
    stm = QtSql.QSqlRelationalTableModel(parent = window);
    tv.setModel(stm);
    stm.setTable(TableName);
    stm.setSort(1, QtCore.Qt.AscendingOrder);

    if i == 2
        stm.setRelation(1, QtSql.QSqlRelation("Callers", "CallersID", "FullName")); 
        stm.setRelation(2, QtSql.QSqlRelation("Callers", "CallersID", "CallerPhone"));#Где CallersID поле id_абонента, FullName - ФИО абонента, а CallerPhone - телефон абонента.
    stm.select();

    k = 0;
    for ColName in ColNames:
        k = k + 1;
        stm.setHeaderData(k, QtCore.Qt.Horizontal, ColName);

    if TableName == "Calls":
        tv.setItemDelegateForColumn(1, QtSql.QSqlRelationalDelegate(tv));
        tv.setItemDelegateForColumn(2, QtSql.QSqlRelationalDelegate(tv));

    tv.hideColumn(0);
    
    k = 0;
    for ColW in ColWidth:
        k = k + 1;
        tv.setColumnWidth(k, ColW);

    if TableName != "Calls":
        btnDel.setEnabled(False);
    else:
        btnDel.setEnabled(True);
    btnAdd.setEnabled(True);

В таком случае, при добавлении таблицы я смогу выбрать любой номер телефона из списка, а мне нужно, как я сказал выше, чтобы показывались лишь номера абонента. Возможно ли сделать такой фильтр и как?
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы