本质上,我希望在MS Access中做一个JSON编辑器:
1.读取在表中存储为单个字符串的JSON数据,并对其进行解析(我已经使用VBA-JSON库解决了大部分问题),
1.将所有JSON键-项对显示为表单中的标签-文本框控件(或文本框-文本框控件,以便也可以编辑键)
1.允许用户通过生成的控件编辑这些键-项对
1.将控件数据转换回字符串并更新表
我想这样做是因为关系数据库模型对于我们的用例来说工作得非常好,除了一个方面;记录硬件的规格与非常不同的标准。大多数的标准不需要操作,他们只需要存储为后代,并传递到一个报告在某个时候。
我遇到的问题是第2项。每个JSON记录将有不同数量的键-项对,并且可能有完全不同的键(除了一些例外,如ProductName或Manufacturer),因此我需要能够为解析的每个单独的JSON字符串生成相关的控件。
我看了一些相关的问题,似乎不推荐generating the textboxes with a For loop。Another one建议创建尽可能多的文本框,因为我认为我会永远需要,并隐藏那些不使用。这似乎是工作,但似乎不是很优雅。
我并不想把JSON数据转换成一个表,因为这会破坏最初将其存储为JSON的目的,但创建一种“动态表”来存储活动的已解析JSON条目,以便可以将其视为数据表,这样做是否有意义?
我对这个选项持开放态度,但更愿意保持它作为一个文本框形式的人体工程学。
1条答案
按热度按时间kmbjn2e31#
我假设您的表有一个JSON编码的字段,包含一个级别的键/值对,没有更深的结构,也没有定义模式来强制执行键和数据类型。
在本例中,我将JSON转换为工作表以进行编辑。VBA-JSON转换器将返回一个Dictionary对象。循环遍历字典键以构建工作表。这可以作为子窗体呈现给用户。
完成后,循环遍历工作表记录以构建新的dictionary对象,然后使用VBA-JSON将其转换为JSON字符串。
你可以使用一个实际的Access本地工作表,或者(更酷!)你可以使用一个断开连接的ADODB记录集。这将是一个完全在内存中的可编辑记录集。但那是另一个主题。