前几天把风讯的“自由标签”终于搞明白了:用一个向导式的方式,从新闻表和栏目表里查询数据,然后将数据按照自由的方式进行排列,并可产生循环、只生成指定序号,或者对字段内容进行截断。
自定义函数:循环内容{#…#}、不循环内容{*n…*}(n>0)代表记录序号、函数(#…#);如(#Left([*FS_News.Title*],20)#)
目前还不知道他们是不是可以嵌套循环。以前自由标签总也不成功,就是忽略了这种关键性的风讯私有写法,使得结果总是为空。不是前几天看别人的例子根本就不会知道这种一句话带过的“帮助”在说什么。再说风讯从2006年以后就没有再更新过这类内容了。
自由标签的的好处是显而易见的,这种方式可以完全打破过去div、ul、li的束缚,使得FLASH幻灯之类的效果很容易实现。如果不掌握自由标签,就只有用系统默认的方式或者借助于符合标准代码的幻灯系统。
定的XSLT、SQL两本书还没来,“需要”就出现了。
今天准备将自由标签和自定义字段结合做一个效果,费了半天劲搞懂了SQL语句才发现:即使在数据库中直接写入查询语句,风讯自带的发布系统也不允许将新闻和栏目表以外的东西通过自由标签生成出来。这不得不说是一个重大遗憾。不过四个多小时的思考和仔细“研判”让我发现了sql查询的可爱之处。
以前我只晓得SQL可以从一个表中带条件的查询出字段数据,但是每本书对于SQL语句的介绍都是几页纸就翻过了,要么就是复杂得要命的一饼黑乎乎的代码,自从上次小山子给我写了一段查询重复文章内容的查询,我就彻底晕了。怎么在一个查询中查询两个表中的数据,在基础入门的例子中是不屑于写的。于是向万能的GK讨例子,我按照ACCSEE图形化操作的方式给他讲我的需求,结果写完了需求我自己也晕了。
通过仔细研读风讯向导生成的新闻表和栏目表关联查询语句,发现SQL的这种查询非常容易理解。首先查询语句中的字段要写全,也就是“数据表名称.字段名”用,号分割他们。在指定来源表名称时把所有表的名称写上,用,分割。
这时候执行的查询结果很可怕,两个表会把所有可能的匹配结果都输出来。所以SQL语句中重要的是后面的条件语句。多个条件语句间用“AND”链接,比如哪个等于哪个啊,哪个等于什么数值啊,完全不用管先后顺序,是不是跨了表,只要你把条件都写出来,那么结果就是你想要的,完全不用管他们的祖宗十八代的因果关系是怎么样的,而ACCESS的图形化界面下要实现跨表查询还要关联这个关联那个,麻烦得要命。怨不得SQL语句才是数据库处理的名门正派。
明白了SQL的这种工作方式,以前一些想起来比较头大的数据关联方式就变得非常容易理解了。
等书来了,要把所有的例子都操作一遍。这东西比较有意思。