gpt4 book ai didi

sqlite - 计划计划程序

转载 作者:行者123 更新时间:2023-12-03 15:39:14 24 4
gpt4 key购买 nike

我的家人拥有一家中型运输公司,当我 3 年前进入这家公司时,我们没有软件来管理我们必须做的所有运输。有 20 个司机,这是一个问题,所以我坐下来,学习了 VBA 的基础知识,并通过 excel 制作了一个应用程序,通过电子邮件管理/调度不同的行程给我们不同的司机。它现在“有效”,但我们正在计划 future 的扩展,所以我开始学习 Xojo(我在 Mac 上,最接近 VBA)

我们收到一份 Excel 文件,告诉我们必须提前一天进行哪些旅行(我们运送人员)。基本上,它是一张包含所有不同客户的表格。我将此工作表导入“周文件”,然后通过不同的宏使用数据。此表中有很多不相关的信息,但我们也会感兴趣的列是类型、数量和小时。

所以基本上,我必须把我所有的行(100+),按类型和数字分组,然后按小时排序。

下面是我的工作表在排序时的样子的一个快速示例(不同的颜色是不同的驱动程序):
sorted sheet

我认为我获得此结果的程序并不是那么好。我循环遍历数据表(隐藏)中的所有行,并使用 If 语句检查其是否为新类型或行程编号,将时间和行引用(第一行,最后一行)保存在数组中,然后循环遍历数组以导出显示表上的范围。请记住,我在得知 VBA 存在 3 周后写了这篇文章。它“有效”,但我喜欢有一个更好的过程。

我将使用 SQLite 将所有信息存储在我开始编写的应用程序中。我想就如何使用 SQL 更快地对所有数据进行排序提出建议。我正在寻找一个程序,我可以找到一种编码方法。

这是我制作的代码示例。

    For RowSearch = 2 To RowCount
If Sheets(DataSheetName).Cells(RowSearch, 2).Value <> Sheets(DataSheetName).Cells(RowSearch - 1, 2).Value _
Or Sheets(DataSheetName).Cells(RowSearch, 3).Value <> Sheets(DataSheetName).Cells(RowSearch - 1, 3).Value Then
Blocks(TripCount, 1) = Position
Blocks(TripCount, 2) = RowSearch - 1
Blocks(TripCount, 3) = Format(Sheets(DataSheetName).Cells(Position, 4).Value, "hh:mm")
TripCount = TripCount + 1
Position = RowSearch
End If
Next RowSearch

Blocks(TripCount, 1) = Position
Blocks(TripCount, 2) = RowSearch - 1
Blocks(TripCount, 3) = Format(Sheets(DataSheetName).Cells(Position, 4).Value, "hh:mm")

'Sorts the blocks by time, loops trought the trips row range to sort the trips by time and type and writes the blocks
RowSelect = 1

For BlockSearch = 1 To TripCount
TempHour = "99:99"

For RowOrder = 1 To TripCount
If Blocks(RowOrder, 3) <= TempHour Then
TempHour = Blocks(RowOrder, 3)
Trips(BlockSearch, 1) = Blocks(RowOrder, 1)
Trips(BlockSearch, 2) = Blocks(RowOrder, 2)
RowChange = RowOrder
End If
Next RowOrder

RowRange = Trips(BlockSearch, 2) - Trips(BlockSearch, 1) + 1
FieldValue = Sheets(DataSheetName).Range("A" & Trips(BlockSearch, 1) & ":" & "R" & Trips(BlockSearch, 2))
Sheets(SheetName).Range("A" & RowSelect & ":" & "R" & RowSelect + RowRange - 1) = FieldValue
Sheets(SheetName).Rows(RowSelect + RowRange).Insert Shift = xlDown
RowSelect = RowSelect + RowRange + 1
Blocks(RowChange, 3) = "99:99"
Next BlockSearch

最佳答案

在 SQL 中,“分组”是一种操作,它不仅将行划分为组,而且还聚合组的所有行以为每个组创建单个输出行。

在您的示例中,行只是按类型、数字和小时排序,这需要这样的查询:

SELECT *
FROM MyTable
ORDER BY Type, Number, Hour

关于sqlite - 计划计划程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24618317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com