单击按钮时自定义挂钩不起作用

Custom hook doesn't work when called on button click

我无法找到此 SQL 语句的错误之处。我使用的是最新的 pyodbcODBC Driver 17 for SQL Server,声明如下:

insert_sql = """MERGE VehicleDistanceReport trg
                            USING (VALUES (?, ?, ?))
                            src(
                            Distance,
                            Ic_Siparis_No,
                            Vehicle_Hour
                            )
                                    ON trg.Ic_Siparis_No = src.Ic_Siparis_No
                            WHEN MATCHED THEN
                                    UPDATE SET 
                                    Distance = src.Distance,
                                    Ic_Siparis_No = src.Ic_Siparis_No,
                                    Vehicle_Hour = src.Vehicle_Hour
                                    WHERE trg.NodeGroup LIKE N'%AĞIR%' OR trg.NodeGroup LIKE N'%MAKİNE%'
                            WHEN NOT MATCHED THEN
                                    INSERT(
                                        id,
                                        Record_No,
                                        Device_No,
                                        License_Plate,
                                        Inı
                                        Distance,
                                        Ic_Siparis_No,
                                        Vehicle_Hour
                                        )                                        
                                    VALUES(
                                        src.Distance,
                                        src.Ic_Siparis_No,
                                        src.Vehicle_Hour
                                        );"""

它说 WHERE 语句附近有语法错误,但查询似乎在 SQL 服务器中有效。

您的 WHEN MATCHED 子句是错误的,因为 WHERE 应该是一个条件。也没有 pooint 更新 Ic_Siparis_No 因为它无论如何都是加入条件

WHEN MATCHED AND trg.NodeGroup LIKE N'%AĞIR%' OR trg.NodeGroup LIKE N'%MAKİNE%' THEN
    UPDATE SET 
    Distance = src.Distance,
    Vehicle_Hour = src.Vehicle_Hour

不要试图将此条件放在 ON 子句中,它会导致不正确的结果。