c语言怎么把宏定义的数据配置到文件中,当需要更改某些数据时,不需要打开程序,在文件中直接修改。

c语言怎么把宏定义的数据配置到文件中,当需要更改某些数据时,不需要打开程序,在文件中直接修改。,第1张

无论是头文件还是源文件 不安装编译环境的情况下 用txt 打开基本也没问题

只是有的时候需要改变下打开方式

如果是需要把数据配置到文件中 那么就要用到C语言的文件 *** 作功能。

设定为在程序运行时读入指定位置的文件数据,按一定规则赋值给其他变量就行。

具体 *** 作可以 百度文库 C语言文件 *** 作

但是这种方法不是用在宏定义上,宏只是一种编译前的替换,如果这个程序已经编译好了 就算能通过文本修改也没用 除非 再次编译。

如果非要实现相近的功能 可以不定义宏,而是通过文件 *** 作功能。在用到相关变量的时候通过文件读取获的。

这样就能在不用再次编译的条件下,实现修改。

参考网上资料:

http://www.access-cn.com/offspace/html/32/n-532.html

一、加载ODBC宏(OFFICE2000光盘有提供)后您就可以使用该函数了。语法及示例详参《OFFICE2000帮助文档》,全篇如下:Office中国社区门户4q_Sz y0[ Z!g

连接到外部数据源并运行工作表中的查询。然后,函数 SQL.REQUEST 以数组形式返回结果,而不必运行宏。如果该函数不存在,就必须安装 Microsoft Excel 的 QDBC 加载宏(XLODBC.XLA)。Office中国社区门户(m1n:jj(alT3^

语法Office中国社区门户}}o%p&I"ev"b

SQL.REQUEST(connection_string,output_ref,driver_prompt,query_text,col_names_logical)

.I3ow{0FKh,]*S'A5V:Eq0

Connection_string 提供信息,如数据源名称、用户标识和口令等。这些信息对于连接数据源的驱动程序是必需的,同时它们必须满足驱动程序的格式要求。下表给出用于 3 个不同驱动程序的 3 个连接串的示例。

#RT"~6e7h&? M!`'J0

oT f'j%o)M0 驱动器 连接串

dBASE DSN=NWindPWD=test

SQL Server DSN=MyServerUID=dbayerPWD=123Database=Pubs

ORACLE DNS=My Oracle Data SourceDBQ=MYSER VERUID=JohnSPWD=Sesame

Office中国社区门户r}??X7||

7V2\O e&{S ImIT8N0

在试图连接到数据源之前,必须定义在 connection_string 中使用的数据源名称(DSN)。Office中国社区门户p.D9{8]k }

Z0k0X/@ Q6|#rAP~0 可以以数组或字符串的形式输入 connection_string。但如果 connection_string 超过 250 个字符,必须按数组的形式输入。

4_0M+Hb&At3^0Office中国社区门户b-Q0iI9p)Y

如果函数 SQL.REQUEST 不能使用 connection_string 访问数据源,则返回错误值 #N/A。 Output_ref 对用于存放完整的连接字符串的单元格的引用。如果在工作表中输入函数 SQL.REQUEST,可以忽略 output_ref。

当需要函数 SQL.REQUEST 返回完整的连接串时,可以使用 output_ref(此种情况下,必须在宏表中输入函数 SQL.REQUEST)。Office中国社区门户#^a#C/b9r~&d

Office中国社区门户K$M'FCJXb

如果省略 output_ref,函数 SQL.REQUEST 不能返回完整的连接串。 Driver_prompt 指定驱动程序对话框的显示时机以及可用的选项。可以使用下表中所描述的数字来描述 driver_prompt。如果省略 driver_prompt,函数 SQL.REQUEST 默认为 2 。

2cX!c0~e5Rl&RT6U0 Office中国社区门户X9d7G _n

Driver_prompt 说明

1 一直显示驱动程序对话框。

2 只有在连接串和数据源说明提供的信息不够充分,以致不能完成连接时,才显示驱动程序对话框。所有对话框选项都可使用。

3 只有在连接串和数据源说明提供的信息不够充分,以致不能完成连接时,才显示驱动程序对话框。如果未指明对话框选项是必需的,这些选项是暗的,不能使用。

4 不显示对话框。如果连接不成功,则返回错误值。

{ |1@Pi)L0Office中国社区门户8_E8q4L9x]6X4J"_/C

Query_text 需要在数据源中执行的 SQL 语句。

如果函数 SQL.REQUEST 不能在指定的数据源中执行 query_text,则返回错误值 #N/A 。Office中国社区门户*`%S Hr+C7e6A1h3f

Office中国社区门户Eg.\*_H)yB

可以将引用连接到 query_text 上来更新查询。在下面的例子中,每次 $A$3 改变,函数 SQL.REQUEST 使用新的数值来更新查询。

"SELECT Name FROM Customers WHERE Balance >"&$A$3&"".

Microsoft Excel 将串长度限制在 255 个字符内。如果 query_text 超过此长度,请在垂直单元格区域中输入查询并使用整个区域作为 query_text。所有单元格的值连接在一起,形成完整的 SQL 语句。 Office中国社区门户 S,m/u(k]

Column_names_logical 指明是否将列名作为结果的第一行返回。如果要将列名作为结果的第一行返回,请将该参数设置为 TRUE。如果不需要将列名返回,则用 FALSE。如果省略 column_names_logical,则函数 SQL.REQUEST 不返回列名。

/q#H@B#Y:ji_0

返回值

如果此函数完成了它的所有功能,则返回查询结果数组或受查询影响的行数。Office中国社区门户WRBy h&O@Pll

Office中国社区门户)z*WnpE1J'E$?.@

如果函数 SQL.REQUEST 不能使用 connection_string 访问数据源,则返回错误值 #N/A。

3u'sr+~9~/yFTfmS0说明

函数 SQL.REQUEST 可以以数组的形式输入。如果以数组形式输入函数 SQL.REQUEST,该函数将返回一个恰好填充选定区域的数组。Office中国社区门户 cq8Xq ]NS

Office中国社区门户(^T%b7@ ]y

如果单元格区域大于结果集,函数 SQL.REQUEST 向返回的数组添加空单元格,直至增加到所需要的大小。

Y"XFA,kW0

+Lu"l5@?0 如果结果集大于以数组形式选定的输入区域,函数 SQL.REQUEST 返回整个数组。Office中国社区门户]/y){ Q sIX

Office中国社区门户1c#ZY8`7n$YRp&x

函数 SQL.REQUEST 参数的次序与 Visual Basic for Application 中函数 SQLRequest 的参数次序不同。

Office中国社区门户"C!pK p9O6BnlPj

示例

6c!s3F^-TzT_0

假设需要对名为 DBASE4 的 DBASE 数据库进行查询。如果在单元格中输入下列公式,将会返回查询结果数组,其中第一行是列名:Office中国社区门户B9]4[RqK_wc

SQL.REQUEST("DSN=NWindDBQ=c:\msqueryFIL=dBASE4", c15, 2,

"Select Custmr_ID, Due_Date from Orders WHERE order_Amt>100", TRUE)二、用“数据”菜单上的“获取外部数据”-“新建数据库查询”向导获取数据库数据。用该向导取得数据后,以后该工作表的数据以后会随数据动态更新(在不移动数据源文件的前提下)。注意:请仔细设置外部数据表的属性,会有更多收获。

以上答案供参考

计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。Excel 办公软件自动集成了“VBA”高级程序语言,用此语言编制出的程序就叫“宏”。使用“VBA”需要有一定的编程基础和耗费大量的时间,因此,绝大多数的使用者仅使用了Excel的一般制表功能,很少使用到“VBA”。

解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,使用“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。

宏的用途在于自动化频繁使用的序列或者是获得一种更强大的抽象能力--但这常常是一回事。

计算机语言如C或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C 程序员可以获得更精巧的宏。

Lisp类语言如Common Lisp和Scheme有更精巧的宏系统: 宏的行为如同是函数对自身程序文本的变形,并且可以应用全部语言来表达这种变形。一个C宏可以定义一段语法的替换,然而一个Lisp的宏却可以控制一节代码的计算。

获得了控制代码的执行顺序(见惰性计算和非限制函数)的能力,使得新创建的语法结构与语言内建的语法结构不可区分。例如,一种Lisp 方言有 cond 而没有if ,就可以使用宏由前者定义后者。Lisp 语法的去部主要扩展,比如面向对象的CLOS 系统,可以由宏来定义。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6754128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存