如果你所属的公司、组织、社区、基金会、学校班级,有自己的图书馆 / 图书室 / 共用书库,你负责管理共用书库、协助处理成员借还书事宜的话,可能会觉得只用纸笔或 Excel 管理借还书信息有点烦,信息散落、不好查看,但“花钱请人专门写一套借还书系统”又有点小题大作,这时你就可以来试试看 Ragic 设计、可以完全免费使用的“借还书系统”。
Ragic 这个免费应用的好处包括:它的操作接口类似 Excel / Google Sheet,很容易理解;登记帐号登录之后打开浏览器(手机安装 app )就可以使用,随时随地都能查看或修改数据;最好的部分是,由于每个组织的流程、需求不尽相同,如果希望把系统的字段、流程调整得更符合自己的需求,不需要花大钱找工程师来写程序,只要升级 Ragic 专业版(可以在这里查看 Ragic 的付费方案介绍)、就可以参阅在线教学文档,自己把系统调整成自己想要的样子。
这个免费模块默认的逻辑是“一个 ISBN 可能有好几本藏书”,意思是:
由于一般图书馆里每种藏书不见得只有一本(也就是说图书馆可能跟书店一样,会放着两三本一模一样、 ISBN 码都是“9789867480729”的“围城”,以便有人借走一本之后,还有另一本可以出借 -- 或单纯当初就是有人一口气捐了好几本书...),借还书时会需要进一步区分是借了哪本、还了哪本。
因此,这个免费模块针对“藏书数据”的管理设置了两张相关联的表单:以 ISBN 书目为数据单元的“书籍清单”,以及以个别藏书为单元、另外以“藏书编号”来区别每本书的“藏书细目”表单,让我们系统化、结构化管理这些信息。
假设你管理的图书馆情况比较单纯,每个 ISBN 确定都只有一本书的话,你可以在不修改设计的情况下使用此模块,只是每本书都要建檔两次(一次 ISBN、一次藏书细目)。如果在此情况下你想要简化表单体系结构,你就可以把体系结构改成只有一张以 ISBN 为独特值的“藏书细目”表单(修改步骤可见此),让你做事更方便。
还没有登记过 Ragic 帐号的话,可以直接点此链接直接安装借还书范本(系统同时会帮您登记数据库帐号)。若已经是 Ragic 订户,可以在应用商店的“生活应用”类别,找到借还书系统模块并点“获取”来安装。
模块中组共有 6 张表单,归类在“借还书系统”的页签底下。
表单数据的新增顺序应为:
书籍部分为 书籍清单 → 藏书细目 → 借书单(借还纪录)→ 还书单。另外可以一开始就在会员数据建檔,也可以在借书时才新增。
这里主要分成记录基本数据用的表单(会员数据、书籍清单/藏书细目),以及运行借还书流程的借书单、还书单,而“借还纪录”主要是因应系统运作逻辑而需要设置的表单(是借书单子表格生成的新表单),不用特别在这里新增或调整数据。流程如下图:
接下来,我们就一张一张介绍 Ragic 借还书系统各表单、流程。有需要进一步调整表单设计的话,可以参阅最后面的常见设计修改步骤。
要管理共用书库、处理借还书流程,第一件事应该就是把书库里的书以有结构的方式建檔,有人来问“你们这里有 xxx 这本书吗”的时候可以马上搜索出结果、有人来借书或还书时也才能注记状态。
如同前面所说,在 Ragic 的这个免费借还书模块中,由于系统默认的逻辑是“一个 ISBN 可能有好几本藏书”,我们使用“书籍清单”和“藏书细目”两张表单,分别管理“总共有哪些 ISBN 书目”和“实际有哪几本藏书”这两种信息。
“书籍清单”就是用来为 ISBN 书目建檔的表单,一个 ISBN = 一笔数据(不可重复),当图书馆购入 / 有人捐赠新的藏书时,如果系统中没有对应的 ISBN 书目,就要在这里建檔成一笔新纪录,例如下图就是将 ISBN 为“9789863208068”的“创新者们”这个书目数据填在上方区块的“基本信息”字段。
“基本信息”以外的“馆藏信息”、以及“藏书细目 & 借阅状态”子表格,这两个区块的灰底颜色比较深,代表它们在 Ragic 是只读字段,数据是在其他地方输入或是公式自行计算的。
以“藏书细目 & 借阅状态”子表格区块来说,它主要是用来记录这个 ISBN 书目底下,实际有哪几本藏书、目前借阅状况,这些细节我们其实是另外在“藏书细目”表单中输入的,这边是利用显示从其他表单的链接将这些信息一起显示出来而已。
如果你要帮书库里每一本要提供借阅的藏书建檔,只在“书籍清单”的“基本信息”填数据、“藏书细目”区块没有内容是没用的,你会发现“馆藏数量”会自动显示为 0,“藏书细目 & 借阅状态”区块也还是空白,代表书目有建檔了,但还没有创建藏书数据。
而如果你建檔完 ISBN,接着就要创建藏书数据的话,最方便的方式就是点击表单右下角的动作单击钮:“创建藏书细目”,就可以进一步创建馆藏藏书数据了。
(而当你依据后面说明的步骤创建好藏书细目数据后,藏书细目 & 借阅状态”区块的相关数据会自动显示出来,“馆藏数量”会自动根据公式算出藏书量、并依照每本藏书的借阅状态算出目前几本在馆内、几本外借中。)
在“书籍清单”某笔数据点“创建藏书细目”这个单击钮,系统就会带你到“藏书细目”这张表单新创建一笔填好对应的 ISBN(并且触发链接与加载、公式而带出对应书名等信息)的数据,直接保存,就帮馆藏的书籍建檔成功。(也可以在基本信息区块补上“馆藏地、可借天数”等信息)
小提醒:这张表单里灰色锁只读的字段是我们透过链接与加载、公式等功能让系统自动带入的,不需要手动填写。如有特定需求要改字段名称、改填写逻辑是可行的,但务必针对你的调整做完整配套思考,例如原本默认公式自动带入值的字段解只读改成手动填写时,务必把原本的公式一并移除。详细解说请参照修改建议。
有需要的话,你当然也可以直接到“藏书细目”这张表单,选择填入对应的 ISBN 来创建藏书数据。
这张表单中,除了记载藏书细目的基本信息,另一个重要功能是记载这本藏书的借阅状态,目前是在书库的书架上?还是借出去了?过去的借阅纪录为何?都可以在这张表单上看到。
为了让表单信息不要太杂乱,这张表单上套用了条件式格式的功能,让特定字段只有在需要时才显示,例如借阅状态 = 已借出时,才显示“是否逾期未还”“借书日”“到期日”等相关的字段信息;借阅状态 = 已归还时,才显示“上次还书日期”字段,同时在逾期未还时将相关状态以红字醒目提示。
这个借还书模块方便的是,刚开始创建藏书数据时,“借阅纪录”字段会自动填入“从未借出”的默认值,后续借还书时只要确实填写借书单、还书单并运行相关单击钮,“藏书细目”上的借阅状态就会因应借还书单的填写自动更新(变成“已借出”或“已归还”、显示上次还书日期、显示相关借阅纪录等),不需要重复回这张表单手动更新每一个字段的数据。
有人要借某本书时,有需要时可以先在“书籍清单”或“藏书细目”表单查询目前书库中是否有书可借。拿了要借的书之后,就需要填写“借书单”来运行借书流程。
借书单上,“借书编号”字段为自动生成的流水号;“借书日期”套用默认值,会自动带出填写当天的日期,“借书人”字段则是链接自“会员数据”表单,填写时点一下就会退出会员数据让你点选,如果会员数据尚未建檔,也可以直接在此时建檔。
接下来,可以在“借阅清单”子表格字段一一选择要借的藏书,此子表格有设置和“藏书细目”表单间的链接与加载关系,点选“藏书编号”字段、就会退出菜单让你选择要借阅的藏书(此部分套用了动态筛选,不会显示“已借出”的藏书),选择后会自动带出“藏书编号+书名”、“馆藏地”、“可借天数”等字段信息,并透过公式自动得出“借出日期”、借书人与“到期日”(借出日期 + 可借天数)。
都设置好后,单击“运行借书”单击钮,这是一个利用更新别张表单字段值功能设计出来的单击钮,点下单击钮后,系统就会根据“借阅清单”每笔子表格数据的“藏书编号”字段,一一更新“藏书细目”中相同藏书编号字段的借阅状态、借书日期与到期日。
举例来说,上图的借书单点单击“运行借书”单击钮后,“藏书细目”上“藏书编号”为 00003 的数据,就会根据这里的信息,自动将藏书细目上的“目前借阅状态”字段更新为“已借出”、“到期日”更新为 2021/5/11、“借书日期”更新为 2021/4/11。
如果一次借阅多本书,只要在借阅清单子表格上一列一列纪录不同本书即可,单击单击钮运行借书时,就会一次更新多本藏书的状态。
有人要还某些书时,会需要填写“还书单”来运行还书流程(一次可还多本书、不同时间点借的书可以填在同一张还书单中)。
还书单填写以及运行还书的流程和借书很类似。以上图为例、还书单号是自动生成的流水号、还书日期一样会自动填入当天日期(默认值设置)、选择“还书人”时可以从会员数据表单中选择已建檔而且曾借过书的会员(这部分利用动态筛选将尚未借过书,也就不可能是“还书人”的会员过滤掉,让流程更方便)。然后在子表格“还书清单”中点选“借书编号”、就可以从退出的菜单选择要还的借阅纪录数据,让系统自动带入其他字段信息。
很多图书馆都会设置“逾期”相关规定,例如逾期一天罚金多少钱,或是逾期一天罚未来一天不能借书,因此还书单上也设置了相关字段,当还书日期晚于到期日(逾期)时,就会显示相关信息。如果你有在该张表单上填写“逾期一天罚金”是多少钱的话,系统也会在这个区块自动帮你做相关计算。
要注意的是,还书和借书流程一样,在填写完表单之后,要点动作单击钮“运行还书”来自动更新其他表单的信息。
“运行还书”这个动作单击钮有一部分做的事跟“运行借书”很像,会利用“更新别张表单字段值”功能,根据藏书编号,到“藏书细目”表单去将借阅状态更新为“已归还”、更新该表单上的“上次还书日期”字段。
另一部分,“运行还书”这个单击钮其实是两组不同的“更新别张表单字段值”单击钮归并而成的,另一个“更新别张表单字段值”单击钮的功能,功能是把还书时间等信息更新到“借还纪录”这张表单的相关字段。
你不必直接使用这张表单,不需要知道怎么在这张表单上填写数据(且为了避免误改数据,这张表单所有字段都设为只读)。
不过因为它和借书单、还书单、藏书细目、会员信息四张表单都有关连、共享部分字段(信息会同步连动),我们仍然建议你大概了解一下表单间的关系、目前模块设计的用意,这样比较能确保数据正确性、未来有需要升级付费版修改表单时,也较能掌握方向。
“借还纪录”这张表单其实是从“借书单”的“借阅清单”子表格,透过子表格生成新表单功能创建的独立表单。生成独立表单之后,我们也额外新增了几个与“还书状态”有关的字段(请见下图的说明),使这张表单包含“借”与“还”两个面向,因此表单名称为“借还纪录”。
为什么我们要将借书单“借阅纪录”子表格变成独立表单呢?主要是因为,后续我们需要利用这个“借还纪录”表单,和“还书单”“藏书细目”“会员数据”三张表单创建关联,以达成某几个方便管理借还书的特定功能。
这几个功能说明如下:
以上这三项功能(表单间的关联),都不能以“借阅纪录”子表格的状态设计出来,只能在“借阅纪录”有独立表单、独立的每一笔数据时才能做到,因此我们才做了这样的设计。
实际我们在借书、还书时,当我们创建了一笔借书单数据、填入“借阅纪录”子表格时,子表格新增了几列借阅纪录,“借还纪录”表单就会同步自动新增几笔对应的数据(“归还纪录”此时是空的)。
还书时,我们可以在还书单子表格中选取借阅状态是“已借出”、准备运行还书程序的数据,运行还书时系统会自动将相关“借还纪录”中归还纪录相关的字段更新。
而这些相关纪录,都会自动显示在“藏书细目”与“会员数据”表单中。
(另外,如果你想多了解一些 Ragic 子表格的特性、能做与不能做的事,以利未来自行设计或修改表单的话,可以参阅这篇说明)
最后,我们回头来说明“会员数据”这张表单。这张表单包含一些基本信息的字段,刚开始帮会员建檔时,其实只要填写“会员姓名”字段就可以了(会员姓名不可重复),会员数据登录日期会自动生成(套默认值抓数据创建日),其他较深底色(只读)的“已借书数量”字段、“借还纪录”子表格则是像前面说明的一样,透过“显示从其他表单的链接”功能自动秀出关联纪录并计算出目前此会员借了多少书、有没有罚金等等。
虽然很多时候,直接使用这个借还书模块就能满足你八九成的需求了,但 Ragic 和市面上其他套装系统最大的差别,其实就是“可以 DIY 客制化”的能力,因为 Ragic 其实不是一个套装系统产品,而是一个“数据库开发工具”,所有不会写程序的人,都可以用 Ragic 这套工具,开发出各式各样的应用、有需要的话也可以随时修改自己的设计,而“借还书系统”就像是 Ragic 提供出来让大家免费使用的一个“设计范例”,演示用 Ragic 各式各样的功能,怎么设计出这样的东西。
因此,有需要的话,你可以在这个系统原有的基础之上,把它进一步修改成更适合自己流程的样子。不过,关于修改范本有很重要的两点要提醒你:
第一点是,“使用范本”这件事本身是完全免费的,但由于我们仍然是一个商用服务,要客制化修改这个范本,只要客制化表单总额度在三张表单以上,就需要升级为付费的专业版了。专业版订户虽然要定期付费,但好处是你不只可以自由修改借还书范本,还可以安装其他各式各样的企业应用范本并自由修改它们、或是利用 Ragic 自行创建各种你想得到的表单和应用,这些都不需要在专业版费用之外额外付费。
第二点是,Ragic 是一个非常适合用户(这里指的是具有 SYSAdmin 身份的用户)亲手去修改、调整系统的工具,但修改既有设计好的范本时,如果不了解原本某些功能或流程在范本中的默认逻辑,修改时没有做好适当的配套,是可能影响原本设计的功能、造成意料之外错误的,因此强烈建议在着手修改前,读过我们“修改范本”的基础教学,以及这篇与借还书系统设计逻辑有相关联的文章。
以“借还书系统”来说,我们曾见过的修改范本设计出现的错误是,用户将藏书细目表单中的“藏书编号+书名”字段直接改成“书名”字段并手动逐一修改字段值,但没有将“藏书编号+书名”字段上设置的Ragic 的字符串公式移除,造成只要有任何动作触发这张表单公式运算时,系统就会用公式运算结果盖掉之前手动填入的内容。而藏书细目表单为了做逾期管理的设计,设置该表单每天运行公式重算,使得每天手动改的内容必定在隔天被系统用公式洗掉。
这样的情况下,合适的修改方式应该是一并将原“藏书编号+书名”字段上设置的字符串公式移除,不让系统自动带入值,才符合修改者“想要手动填写/修改字段值”的目的。
如希望进一步检查确认自己的修改有没有在其他地方触及“用户手动填写某字段、但同时又套用公式或其他自动化设置让系统自动修改此字段”这类错误/非预期结果,可另外参阅这篇文档列出的情境。
这边,我也另外针对借还书应用常见的修改需求,提供一些步骤建议,减少你的学习障碍。有任何疑问,也欢迎来信 support@ragic.com 跟我们说!
如同前面所说,这个免费模块默认的逻辑是“一个 ISBN 可能有好几本藏书”,因此针对“藏书数据”的管理设置了两张相关联的表单:以 ISBN 书目为数据单元的“书籍清单”,以及以个别藏书为单元、另外以“藏书编号”来区别每本书的“藏书细目”表单。
假设你管理的图书馆情况比较单纯,每个 ISBN 确定都只有一本书的话,你可以在不修改设计的情况下使用此模块,只是每本书都要建檔两次(一次 ISBN、一次藏书细目),但你也可以依循以下步骤,把体系结构改成只有一张以 ISBN 为独特值的“藏书细目”表单:
如果尚未在 Ragic 上将书籍建檔,可跳过此一步骤。如果之前测试时已经在“书籍清单”或“藏书细目”创建了文件,不希望修改设计之后要重新登打数据的话,可选择您需要的表单,到工具条表将数据汇出成 Excel 来备份。
为了保险起见,接下来你可以到应用商店,重新安装一次“借还书系统”模块。这个步骤的用意是,如果你先前在测试使用时,在不太清楚模块设计原理的情况下有改过一些链接设置的话,重新安装一次范本模块可以让它“绕回原厂设置”,把先前您做的设计修改覆盖掉。
如果你很确定你没有改过设计(检查版本纪录时没有看到任何修改过后的版本),或是你很清楚自己先前设计修改的逻辑并希望保留这些修改,那可以跳过这步骤。
首先到“书籍清单”表单,直接删除“藏书细目 & 借阅状态”子表格
接着到“藏书细目”表单:
(1) 删除 “ISBN”与 “书名”字段
(2) 把“藏书编号”字段改名为“ISBN”,字段种类改为自由输入、撤销只读、维持不可重复属性
(3)“藏书编号条形码”更名为“ISBN条形码”,“藏书编号+书名”更名为“书名”并清空公式设置(如果有公式在里面的话)、运行一次公式重算;这两个字段也撤销只读。
可以到借书单、还书单、借还纪录、会员数据表单中,把原本为“藏书编号”的字段都改名为“ISBN”,原本是“藏书编号条形码”的字段都更名为“ISBN条形码”,原本是“藏书编号+书名”的字段都更名为“书名”
把汇出备份的书籍数据 Excel 檔重新汇入回“藏书细目”表单,注意要依照 Ragic 的汇入规则来调整汇入檔的格式。
有需要的话,也可以直接将此时的“藏书细目”表单更名为“书籍列表”“书籍清单”或“书籍管理”等名称。这样修改之后,这张新的藏书表单就等于扮演原本模块里“书籍清单”与“藏书细目”两张表单的功用。
目前借还书范本既有的设计中,“藏书细目”的一笔数据 = 一本藏书,通常不会一次借两本以上相同书名的书。
如果你“管理借还书”的需求,并不是个别用户一次一本的借阅,而是例如可能办活动时要一次将同样的一批书籍借出馆外,办完活动后要批次归还,且同样 ISBN 的书籍可能分批存放在不同馆藏的话,可以将“藏书细目”修改为纪录每个馆有多少藏书(不以“单本藏书”为藏书细目的单元,而是以馆藏地做区分,同一个书名依据不同馆藏地区分成不同笔藏书细目数据),借还时纪录并自动更新数量。
此时的修改建议如下:
将藏书细目的逻辑修改为“一笔数据 = 一个书名+馆藏地”。可以直接在藏书细目新增“馆藏数量”以及“目前在馆数量”字段(数字字段),并且在撤销原本的条件式格式设置后,将原本以单本书为主的借阅状态相关字段(如下)移除
到“书籍清单”的“藏书细目”参照子表格区块,将单笔借还纪录相关字段移除,并把刚刚在藏书细目表单新增的馆藏数量以及在馆数量字段以这个方法加进来。
然后就可以修改“馆藏数量”的公式,使其等于子表格馆藏数量字段的加总;“目前在馆数量”等字段的公式也要做对应修改。
要从借还书表单原本“同一个书名通常只借或还一本”的逻辑,转换成“借/还一批书籍并批次更新”的情况,首先要在借书单、还书单的子表格上都新增“借书数量”“还书数量”的数字字段(并且同样可以移除您不需要的字段)。
接着,运行借书的动作单击钮要修改,原本的方式是将某本藏书细目的状态更新为“已借出”。
现在由于是批次借阅,会需要像商品出库一样,在“更新别张表单字段值”的借书动作单击钮里,设置要将“借书数量”扣减“目前在馆数量”字段数值。
还书时,也要在还书单的“更新别张表单字段值”运行还书动作单击钮里,设置要将“还书数量”累加到原本的“馆藏数量”字段数值上(更新条件要改成 +)。
“借还书模块”默认是让管理书库的人使用的工具,也就是说,从书籍登录、记录借书、记录还书,默认都是由书库的管理员像图书馆员一样自己操作系统来使用,每张表单的权限设置都是给予内部用户(User)群组“公告板式用户”的权限(这是你在 Ragic 创建表单时,默认的权限设置)
如果你希望让借阅者自己创建借书单、运行借书,以及自己创建还书单、运行还书的话,大原则只要确认你的表单权限设置,可以让借阅者看到所有书籍清单、看到全部会员数据(或至少借阅者自己的会员数据)、并且有在借书单、还书单创建数据的权限就可以了。
举例来说,假设你的借阅者都会是数据库的内部用户,且你不介意借阅者看到其他会员数据的话,那就完全不需要调整表单权限设置,因为公告板式用户可以看得到所有数据、也可以自己创建数据。如果不希望借阅者自行登录书籍数据的话,可以把书籍数据相关表单针对内部用户的权限改为“仅阅览”。
假设你的借阅者都会是数据库的内部用户,但你希望借阅者只看到自己的会员数据、看不到别人的话,可以把会员数据表单的 User 群组权限改成“问卷式用户”,并新增指派字段在每个会员数据上填入该会员对应的用户帐号即可。不希望借阅者看到别人的借书单、还书单的话,一样也可以将对应表单的 User 群组权限改成“问卷式用户”。
同理,如果你的借阅者是外部用户,可以在书籍清单/藏书细目开放仅阅览权限给 X-User、会员清单开放问卷式用户权限给 X-User 并搭配指派功能、借书单/还书单/借还纪录开放问卷式用户权限给 X-User。
如果你的借阅者不会有 Ragic 帐号/不会被加进这个数据库的话,大致上将上述设置改为给 "EVERYONE"群组(代表未登录 Ragic 的用户)即可,不过要注意的是,一旦这样开放,就代表任何人都可以看到相关数据(你的书库中有哪些书、借阅状况),可能也不适合再使用“会员清单”表单,可再依你情况斟酌如何修改对应设计。
由于借还书时从藏书细目选数据、更新纪录,而每笔藏书细目上有“馆藏地”这个选项字段,因此如果没有特别设置,每本书基本上会绑在其设置的馆藏地,也就是默认为“甲地借甲地还”的机制。虽然其实没有限制“甲地借乙地还”,但甲借乙还时馆藏位置会无法正确更新。
如果你的图书馆容许“甲地借乙地还”,希望正确记录还书后新的馆藏位置,只要修改“还书单”表单逻辑,让还书细项子表格包含可手动填入的“还书站点”字段,然后修改“运行还书”单击钮,让单击钮运行时用“还书站点”更新“馆藏地”即可。方法如下:
1. 在还书单“还书清单”子表格新增两个字段“借书站点”“还书站点”,“借书站点”要链接与加载自“借还纪录”表单的“馆藏地”字段,而“还书站点”建议设为必填字段
2.由于“运行还书”是归并单击钮,欲修改逻辑需要先删除、再重建,因此请先删除原本的“运行还书”单击钮。
修改“更新借还纪录”单击钮,新增一个更新条件用“还书站点”字段值更新“馆藏地”信息(新增后,记得再单击一次“创建更新别张表单字段值动作单击钮”来更新单击钮设置):
3.修改完“更新借还纪录”单击钮后,重新利用归并单击钮功能,将“更新借还纪录”与“更新藏书借阅状态”单击钮单击钮归并为新的“运行还书”单击钮,这样之后填写还书单时,只要一一填上还书站点,就能更新馆藏位置达到甲地借乙地还的流程管理了。
如果甲地乙还的状况较少,你还可以加上进阶修改:在“还书单”新增“是否甲地借乙地还”的必填字段(字段值为选项:是、否),在“还书站点”字段套用条件公式让甲地借乙地还为“否”时带入原借书站点,“是”时留空手动填写。