随机抽取50人及照片

有数据表2024级A.DBF,其中有学校、姓名、省学籍辅号、班级等,还有一个照片文件夹叫2024级照片(文件太大了,没法在此上传),照片用省学籍辅号命名,要求从2024级A.DBf中随机抽取50人(男女比例均衡),并将这50人照片从照片文件夹导出并另存
绞尽脑汁思考+询问dp,勉强写了下面语句,能初步实现取出50人。
请教各位大佬:
1.如何实现性别均衡后的班级人数相对均衡?
2.dp的语句忒繁琐,如何更简洁优化一下
3.这只是一个学校的,如果扩展的一个县市区,如何实现一次抽取所有不同学校的50人
4.同事不大会用VF,如果用Excel的话,能否简单实现

SET SAFETY OFF CLOSE ALL CLEAR * 定义路径和文件夹名称 lcSourceTable = "2024级.DBF" lcPhotoFolder = "2024级照片\" lcExportFolder = "导出50人照片\" * 处理导出文件夹 IF DIRECTORY(lcExportFolder) * 删除导出文件夹中的所有文件 lcDeleteCmd = "DELETE FILE " + lcExportFolder + "*.*" &lcDeleteCmd ? "已清空导出文件夹: " + lcExportFolder ELSE * 创建导出文件夹 MKDIR (lcExportFolder) ? "已创建导出文件夹: " + lcExportFolder ENDIF * 打开DBF文件 USE (lcSourceTable) ALIAS students * 创建临时表并添加性别字段和随机数字段 SELECT *, SPACE(2) AS xb, 00000000000 AS sjs FROM students INTO CURSOR temp_cursor READWRITE * 根据身份证号计算性别(第17位奇数为男,偶数为女) REPLACE ALL xb WITH IIF(MOD(VAL(SUBSTR(身份证件号, 17, 1)), 2) = 1, "男", "女") IN temp_cursor * 设置随机种子并生成随机数 RAND(-1) REPLACE ALL sjs WITH RAND() * 1000000000 IN temp_cursor * 分别选择男女各25人 SELECT * FROM temp_cursor WHERE xb = "男" ORDER BY sjs INTO CURSOR male_cursor TOP 25 SELECT * FROM temp_cursor WHERE xb = "女" ORDER BY sjs INTO CURSOR female_cursor TOP 25 * 合并结果 SELECT * FROM male_cursor UNION SELECT * FROM female_cursor INTO TABLE 导出top50.dbf ORDER BY 所在班级 * 复制照片文件 SELECT 导出top50 SCAN lcStudentID = ALLTRIM(省学籍辅号) lcSourcePhoto = lcPhotoFolder + lcStudentID + ".jpg" lcTargetPhoto = lcExportFolder + lcStudentID + ".jpg" IF FILE(lcSourcePhoto) COPY FILE (lcSourcePhoto) TO (lcTargetPhoto) ELSE ? "照片未找到: " + lcSourcePhoto ENDIF ENDSCAN * 清理资源 CLOSE ALL ? "操作完成。已成功随机抽取50名学生(男女各25人)并复制照片。"
[此贴子已经被作者于2025-9-8 14:42编辑过]