标题几乎说明了一切。我们被迫在大学里使用15年历史的软件,我没有时间自己学习一个软件,更不用说它在大学里的电脑上运行的速度有多慢。 VB6本身几乎没有运行。
现在,我们几乎没有教过代码,我们教的第一语言是Pascal,现在是VB6(记住这是2015年!)。
所以,几乎没有任何知识,我可以在网上找到什么信息,我尝试了这段可怕的代码:
frm_menu.dbMain.Execute "if(exists(select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME != 'fencer' )) begin create table fencer(<insert fields here>) end"
frm_menu是名为dbMain的数据库变量所在的形式。 'fencer'是表格的名称。
当然,我刚刚添加的<insert fields here>
因为我有大量的字段,但语法很好并且已经过测试。
我不知道information_schema是什么,研究没有帮助,我没有太多时间去尝试理解它。
VB6抛出以下错误:
运行时错误'3078' Microsoft Jet数据库引擎无法找到输入表或查询(上面的代码行&gt;)。确保它存在且其名称拼写正确。
不幸的是,由这些不称职的老师教导导致我陷入困境,没有时间解决它。
如果有人可以提供任何建议或帮助,我将非常感激。
感谢。
答案 0 :(得分:1)
您发布的代码片段尝试从数据库中选择表名。你发布的内容并不完全正确。 !=
意味着不等于。 !
被称为“Bang”,就SQL而言,在语法上与<>
在语法上相同(并且可以互换)。发布的代码将选择数据库中名称不是“fencer”的所有表。
您发布的示例正在传递的是尝试从数据库中选择表信息的查询,如果没有返回任何内容,请创建该表。如果在尝试访问数据库之前运行该行代码,它将检查数据库中是否存在表,如果找不到,则会创建表。
更正的代码应为(SQL):
frm_menu.dbMain.Execute "IF (NOT EXISTS( SELECT * FROM " & _
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'fencer'))" & _
"BEGIN" & _
code to create the table goes here
"END"
更正后的代码应为(MS Access):
frm_menu.dbMain.Execute "If Not Exists(SELECT [Name] FROM MSysObjects WHERE " & _
"[Name]='spencer' And Type In (1,4,6)) Then " & _
code to create the table goes here
"End If"