﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客网-青蛙學堂-随笔分类-軟件布袋</title><link>http://www.cnitblog.com/yide/category/1524.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 06 Nov 2007 08:17:43 GMT</lastBuildDate><pubDate>Tue, 06 Nov 2007 08:17:43 GMT</pubDate><ttl>60</ttl><item><title>html--css</title><link>http://www.cnitblog.com/yide/archive/2007/11/06/35917.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 06 Nov 2007 01:28:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2007/11/06/35917.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/35917.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2007/11/06/35917.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/35917.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/35917.html</trackback:ping><description><![CDATA[<p><span>&nbsp;
<p>CSS全称Cascading Style Sheet。层叠式样式表。<br>一、CSS的四种实现方式：<br>1.内嵌式：</p>
<p>2.外链式：</p>
<p>3.导入式</p>
<p>4.属性式：</p>
<p>二.CSS的定义：<br>选择对象{属性1:值1;属性2:值2;属性3:值3;属性n:值n&#8230;&#8230;}<br>如：<br>td{font-size:12px;color:#FFFF00}<br>.myname{font-size:12px;color:#FFFF00}<br>a:hover{font-size:12px;color:#FFFF00;text-decoration: underline;}</p>
<p>三.四种选择对象<br>1.HTML selector (TagName)<br>2.class selector (.NAME)<br>3.ID selector (#IDname)<br>4.特殊对象 (a:hover　a:link　a:visited　a:active)</p>
<p>1.HTML selector<br>HTML selector就是HTML的置标符，如：DIV、TD、H1。HTML selector的作用范围是应用了该样式的所有页面中的所有该置标符。<br>例：<br>td<br>{<br>color: #FF0000;<br>} <br>--&gt;<br>注意：代码的作用是使表格单元格内文字自动变红色。</p>
<p>2.class selector<br>定义class selector需要往其名称其加一个点&#8220;.&#8221;。如&#8220;.classname&#8221;。class selector的作用范围是所有包含&#8220;class="classname"&#8221;的置标符。<br>例：<br>.fontRed<br>{<br>color: #FF0000; <br>}<br>--&gt;<br>注意：在第二个中没有&#8220;class="fontRed"&#8221;，所以文字没有变红色。</p>
<p>3.ID selector<br>定义ID selector需要往其名称其加一个点&#8220;#&#8221;。如&#8220;#IDname&#8221;。ID selector的作用范围是所有包含&#8220;ID="classname"&#8221;的置标符。<br>例：</p>
<p>#fontRed<br>{<br>color: #FF0000;<br>}<br>--&gt;&nbsp;&nbsp;<br>注意：在第二个中没有&#8220;ID="fontRed"&#8221;，所以文字没有变红色。</p>
<p>4.特殊对象<br>特殊对象包括四种，是针对链接对象设置的:<br>a:hover 鼠标移上时的超链接<br>a:link 常规，非访问超链接<br>a:visited 访问过的超链接<br>a:active 鼠标点击时的超链接<br>特殊对象的作用范围是所有置标符（这句话有待商榷，因为下面很快就有一种方法可以把&#8220;所有&#8221;两个字推翻）。<br>例：<br>a:hover<br>{<br>color: #0000FF;<br>text-decoration: underline;<br>}<br>--&gt;<br>注意下面，很有用！！！<br>a.classname:hover<br>a#IDname:hover<br>这两种写法，是分别配合.classname与#IDname使用的。它的作用范围变成了所有包含&#8220;class="classname"&#8221;或&#8220;ID="IDname"&#8221;的置标符。这种写法，可以帮助你在同一页面中实现多种a:hover效果，可以看一下艺网的主页上导航栏文字与普通文章标题在鼠标时的区别。</p>
<p>四.应用：<br>1.置标符　自动应用<br>2.特制类　class="NAME"<br>3.ID&nbsp;&nbsp; ID="IDname"<br>4.特殊对象　自动应用<br>五.CSS属性<br>CSS的属性有很多，像上文中用到最多的color，表示文字的颜色。background-color表示背景色。这个是最主要的，但是因为没有什么难度，参考一下相关手册就可以了。</p>
<p>CSS 标签属性/属性参考<br>这里列出了目前支持的样式表(CSS)标签属性。</p>
<p><strong>CSS 标签属性/属性</strong></p>
<p>行为属性 behavior</p>
<p>字体和文本属性 direction<br>direction <br>font <br>font-family <br>font-size <br>font-style <br>font-variant <br>font-weight <br>ime-mode<br>layout-grid<br>layout-grid-char<br>layout-grid-line<br>layout-grid-mode<br>layout-grid-type<br>letter-spacing <br>line-break<br>line-height <br>min-height<br>ruby-align<br>ruby-overhang<br>ruby-position<br>text-align <br>text-autospace<br>text-decoration <br>text-indent <br>text-justify<br>text-kashida-space<br>text-overflow <br>text-transform <br>text-underline-position<br>unicode-bidi <br>vertical-align <br>white-space<br>word-break<br>word-wrap<br>writing-mode<br></p>
</span>
<img src ="http://www.cnitblog.com/yide/aggbug/35917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2007-11-06 09:28 <a href="http://www.cnitblog.com/yide/archive/2007/11/06/35917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--menu</title><link>http://www.cnitblog.com/yide/archive/2007/11/05/35890.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 05 Nov 2007 07:08:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2007/11/05/35890.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/35890.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2007/11/05/35890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/35890.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/35890.html</trackback:ping><description><![CDATA[<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br>&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br>&lt;title&gt;二?dropdown?出菜?--A CROSS BROWSER DROP DOWN CASCADING VALIDATING MENU&lt;/title&gt;<br>&lt;style type="text/css"&gt;<br>/* common styling */<br>/* set up the overall width of the menu div, the font and the margins */</p>
<p>.menu {<br>font-family: arial, sans-serif; <br>width:750px; <br>margin:0; <br>margin:50px 0;<br>}<br>/* remove the bullets and set the margin and padding to zero for the unordered list */<br>.menu ul {<br>padding:0; <br>margin:0;<br>list-style-type: none;<br>}<br>/* float the list so that the items are in a line and their position relative so that the drop down list will appear in the right place underneath each list item */<br>.menu ul li {<br>float:left; <br>position:relative;<br>}<br>/* style the links to be 104px wide by 30px high with a top and right border 1px solid white. Set the background color and the font size. */<br>.menu ul li a, .menu ul li a:visited {<br>display:block; <br>text-align:center; <br>text-decoration:none; <br>width:104px; <br>height:30px; <br>color:#000; <br>border:1px solid #fff;<br>border-width:1px 1px 0 0;<br>background:#c9c9a7; <br>line-height:30px; <br>font-size:11px;<br>}<br>/* make the dropdown ul invisible */<br>.menu ul li ul {<br>display: none;<br>}</p>
<p>/* specific to non IE browsers */<br>/* set the background and foreground color of the main menu li on hover */<br>.menu ul li:hover a {<br>color:#fff; <br>background:#b3ab79;<br>}<br>/* make the sub menu ul visible and position it beneath the main menu list item */<br>.menu ul li:hover ul {<br>display:block; <br>position:absolute; <br>top:31px; <br>left:0; <br>width:105px;<br>}<br>/* style the background and foreground color of the submenu links */<br>.menu ul li:hover ul li a {<br>display:block; <br>background:#faeec7; <br>color:#000;<br>}<br>/* style the background and forground colors of the links on hover */<br>.menu ul li:hover ul li a:hover {<br>background:#dfc184; <br>color:#000;<br>}</p>
<p>&lt;/style&gt;<br>&lt;!--[if lte IE 6]&gt;</p>
<p>&lt;style type="text/css"&gt;<br>/* styling specific to Internet Explorer IE5.5 and IE6. Yet to see if IE7 handles li:hover */</p>
<p>/* Get rid of any default table style */<br>table {<br>border-collapse:collapse;<br>margin:0; <br>padding:0;<br>}<br>/* ignore the link used by 'other browsers' */<br>.menu ul li a.hide, .menu ul li a:visited.hide {<br>display:none;<br>}<br>/* set the background and foreground color of the main menu link on hover */<br>.menu ul li a:hover {<br>color:#fff; <br>background:#b3ab79;<br>}<br>/* make the sub menu ul visible and position it beneath the main menu list item */<br>.menu ul li a:hover ul {<br>display:block; <br>position:absolute; <br>top:32px; <br>left:0; <br>width:105px;<br>}<br>/* style the background and foreground color of the submenu links */<br>.menu ul li a:hover ul li a {<br>background:#faeec7; <br>color:#000;<br>}<br>/* style the background and forground colors of the links on hover */<br>.menu ul li a:hover ul li a:hover {<br>background:#dfc184; <br>color:#000;<br>}</p>
<p>&lt;/style&gt;</p>
<p>&lt;![endif]--&gt;<br>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;div class="menu"&gt;</p>
<p>&lt;ul&gt;<br>&lt;li&gt;&lt;a class="hide" href="../menu/index.html"&gt;DEMOS&lt;/a&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;a href="../menu/index.html"&gt;DEMOS<br>&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;![endif]--&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/zero_dollars.html" title="The zero dollar ads page"&gt;zero dollars&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/embed.html" title="Wrapping text around images"&gt;wrapping text&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/form.html" title="Styling forms"&gt;styled form&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/nodots.html" title="Removing active/focus borders"&gt;active focus&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/shadow_boxing.html" title="Multi-position drop shadow"&gt;shadow boxing&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/old_master.html" title="Image Map for detailed information"&gt;image map&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/bodies.html" title="fun with background images"&gt;fun backgrounds&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/fade_scroll.html" title="fade-out scrolling"&gt;fade scrolling&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../menu/em_images.html" title="em size images compared"&gt;em sized images&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/a&gt;<br>&lt;![endif]--&gt;</p>
<p>&lt;/li&gt;</p>
<p>&lt;li&gt;&lt;a class="hide" href="index.html"&gt;MENUS&lt;/a&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;a href="index.html"&gt;MENUS<br>&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;![endif]--&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="spies.html" title="a coded list of spies"&gt;spies menu&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="vertical.html" title="a horizontal vertical menu"&gt;vertical menu&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="expand.html" title="an enlarging unordered list"&gt;enlarging list&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="enlarge.html" title="an unordered list with link images"&gt;link images&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="cross.html" title="non-rectangular links"&gt;non-rectangular&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="jigsaw.html" title="jigsaw links"&gt;jigsaw links&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="circles.html" title="circular links"&gt;circular links&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/a&gt;<br>&lt;![endif]--&gt;</p>
<p>&lt;/li&gt;</p>
<p>&lt;li&gt;&lt;a class="hide" href="../layouts/index.html"&gt;LAYOUTS&lt;/a&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;a href="../layouts/index.html"&gt;LAYOUTS<br>&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;![endif]--&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../layouts/bodyfix.html" title="Cross browser fixed layout"&gt;Fixed 1&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../layouts/body2.html" title="Cross browser fixed layout"&gt;Fixed 2&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../layouts/body4.html" title="Cross browser fixed layout"&gt;Fixed 3&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../layouts/body5.html" title="Cross browser fixed layout"&gt;Fixed 4&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../layouts/minimum.html" title="A simple minimum width layout"&gt;minimum width&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/a&gt;<br>&lt;![endif]--&gt;</p>
<p>&lt;/li&gt;</p>
<p>&lt;li&gt;&lt;a class="hide" href="../boxes/index.html"&gt;BOXES&lt;/a&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;a href="../boxes/index.html"&gt;BOXES<br>&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;![endif]--&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="spies.html" title="a coded list of spies"&gt;spies menu&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="vertical.html" title="a horizontal vertical menu"&gt;vertical menu&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="expand.html" title="an enlarging unordered list"&gt;enlarging list&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="enlarge.html" title="an unordered list with link images"&gt;link images&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="cross.html" title="non-rectangular links"&gt;non-rectangular&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="jigsaw.html" title="jigsaw links"&gt;jigsaw links&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="circles.html" title="circular links"&gt;circular links&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/a&gt;<br>&lt;![endif]--&gt;</p>
<p>&lt;/li&gt;</p>
<p>&lt;li&gt;&lt;a class="hide" href="../mozilla/index.html"&gt;MOZILLA&lt;/a&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;a href="../mozilla/index.html"&gt;MOZILLA<br>&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;![endif]--&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/dropdown.html" title="A drop down menu"&gt;drop down menu&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/cascade.html" title="A cascading menu"&gt;cascading menu&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/content.html" title="Using content:"&gt;content:&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/moxbox.html" title=":hover applied to a div"&gt;mozzie box&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/rainbow.html" title="I can build a rainbow"&gt;rainbow box&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/snooker.html" title="Snooker cue"&gt;snooker cue&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/target.html" title="Target Practise"&gt;target practise&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/splittext.html" title="Two tone headings"&gt;two tone headings&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../mozilla/shadow_text.html" title="Shadow text"&gt;shadow text&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/a&gt;<br>&lt;![endif]--&gt;</p>
<p>&lt;/li&gt;</p>
<p>&lt;li&gt;&lt;a class="hide" href="../ie/index.html"&gt;EXPLORER&lt;/a&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;a href="../ie/index.html"&gt;EXPLORER<br>&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;![endif]--&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../ie/exampleone.html" title="Example one"&gt;example one&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../ie/weft.html" title="Weft fonts"&gt;weft fonts&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../ie/exampletwo.html" title="Vertical align"&gt;vertical align&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/a&gt;<br>&lt;![endif]--&gt;</p>
<p>&lt;/li&gt;</p>
<p>&lt;li&gt;&lt;a class="hide" href="../opacity/index.html"&gt;OPACITY&lt;/a&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;a href="../opacity/index.html"&gt;OPACITY<br>&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;![endif]--&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../opacity/colours.html" title="colour wheel"&gt;opaque colours&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../opacity/picturemenu.html" title="a menu using opacity"&gt;opaque menu&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../opacity/png.html" title="partial opacity"&gt;partial opacity&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="../opacity/png2.html" title="partial opacity II"&gt;partial opacity II&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;</p>
<p>&lt;!--[if lte IE 6]&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/a&gt;<br>&lt;![endif]--&gt;</p>
<p>&lt;/li&gt;<br>&lt;/ul&gt;</p>
<p>&lt;!-- clear the floats if required --&gt;<br>&lt;div class="clear"&gt;&amp;nbsp;&lt;/div&gt;</p>
<p>&lt;/div&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br></p>
<img src ="http://www.cnitblog.com/yide/aggbug/35890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2007-11-05 15:08 <a href="http://www.cnitblog.com/yide/archive/2007/11/05/35890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#_Conn_db</title><link>http://www.cnitblog.com/yide/archive/2007/10/30/35588.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 30 Oct 2007 06:06:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2007/10/30/35588.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/35588.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2007/10/30/35588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/35588.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/35588.html</trackback:ping><description><![CDATA[<div align=center>
<h1 class=aTitle>深入分析ADO.NET中的DataSet对象</h1>
</div>
<table width="97%" align=center>
    <tbody>
        <tr>
            <td width=120>[日期：<span id=TimeLabel>2006-1-6</span>]</td>
            <td align=middle>来源：<span id=SourceLabel></span>&nbsp; 作者：<span id=AuthorLabel></span></td>
            <td align=right width=100>[字体：<a href="javascript:ContentSize(16)"><u><font color=#0000ff>大</font></u></a> <a href="javascript:ContentSize(14)"><u><font color=#0000ff>中</font></u></a> <a href="javascript:ContentSize(12)"><u><font color=#0000ff>小</font></u></a>] </td>
        </tr>
    </tbody>
</table>
<div class=content id=BodyLabel style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">　　ADO.NET是.Net FrameWork SDK中用以操作数据库的类库的总称。而DataSet类则是ADO.NET中最核心的成员之一，也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触的类。之所以DataSet类在ADO.NET中具有特殊的地位，是因为DataSet在ADO.NET实现从数据库抽取数据中起到关键作用，在从数据库完成数据抽取后，DataSet就是数据的存放地，它是各种数据源中的数据在计算机内存中映射成的缓存，所以有时说DataSet可以看成是一个数据容器。同时它在客户端实现读取、更新数据库等过程中起到了中间部件的作用（DataReader只能检索数据库中的数据）。<br><br>　　各种.Net平台开发语言开发数据库应用程序，一般并不直接对数据库操作（直接在程序中调用存储过程等除外），而是先完成数据连接和通过数据适配器填充DataSet对象，然后客户端再通过读取DataSet来获得需要的数据，同样更新数据库中数据，也是首先更新DataSet，然后再通过DataSet来更新数据库中对应的数据的。可见了解、掌握ADO.NET，首先必须了解、掌握DataSet。DataSet主要有三个特性：<br><br>　　1. 独立性。DataSet独立于各种数据源。微软公司在推出DataSet时就考虑到各种数据源的多样性、复杂性。在.Net中，无论什么类型数据源，它都会提供一致的关系编程模型，而这就是DataSet。<br><br>　　2. 离线（断开）和连接。DataSet既可以以离线方式，也可以以实时连接来操作数据库中的数据。这一点有点像ADO中的RecordSet。<br><br>　　3. DataSet对象是一个可以用XML形式表示的数据视图，是一种数据关系视图。<br><br>　　<strong>一.DataSet对象的结构模型及和RecordSet的比较</strong><br><br>　　虽说ADO.NET是 ADO在.Net平台下得后继版本，但二者的区别是很大的。突出表现在ADO中的RecordSet对象和ADO.NET中的DataSet对象。RecordSet其实也是非常灵活的一个对象，微软公司推出它也是煞费苦心，如：RecordSet可以离线操作数据库，性能优良，效率较高等等这些都让当时的程序员为之一振。RecordSet虽然已经很复杂，但DataSet却比RecordSet复杂的多，我们知道每一DataSet往往是一个或多个DataTable 对象的集合，这些对象由数据行和数据列以及主键、外键、约束和有关DataTable对象中数据的关系信息组成。而RecordSet只能存放单张数据表，虽然这张数据表可以由几张数据表JOIN生成。所以有些时候说，RecordSet更类似于DataSet中的DataTable。DataSet对象的结构模型如图01所示：<br><br>
<table width="90%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div align=center><img onmousewheel="return bbimg(this)" onclick=ImgClick(this) height=345 onerror="this.src='http://www.yesky.com/image20010518/266317.gif';" hspace=3 src="http://www.zhuxiaolei.com/upload/060106091232081.gif" width=353 align=center vspace=1 border=1 resized="0"><br><span class=content>图01：DataSet对象的结构模型图 </span></div>
            </td>
        </tr>
    </tbody>
</table>
<br>　　通过图01可见在DataSet对象结构还是非常复杂的，在DataSet对象的下一层中是DataTableCollection对象、DataRelationCollection对象和ExtendedProperties对象。上文已经说过，每一个DataSet对象是由若干个DataTable对象组成。DataTableCollection就是管理DataSet中的所有DataTable对象。表示DataSet中两个DataTable对象之间的父/子关系是DataRelation对象。它使一个DataTable 中的行与另一个DataTable中的行相关联。这种关联类似于关系数据库中数据表之间的主键列和外键列之间的关联。DataRelationCollection对象就是管理DataSet中所有DataTable之间的DataRelation关系的。在DataSet中DataSet、DataTable和DataColumn都具有ExtendedProperties属性。ExtendedProperties其实是一个属性集（PropertyCollection），用以存放各种自定义数据，如生成数据集的SELECT语句等。<br><br>　　<strong>二．使用DataSet：</strong><br><br>　　DataSet其实就是数据集，上文已经说过DataSet是把数据库中的数据映射到内存缓存中的所构成的数据容器，对于任何数据源，它都提供一致的关系编程模型。在DataSet中既定义了数据表的约束关系以及数据表之间的关系，还可以对数据表中的数据进行排序等。DataSet使用方法一般有三种：<br><br>　　1. 把数据库中的数据通过DataAdapter对象填充DataSet。<br><br>　　2. 通过DataAdapter对象操作DataSet实现更新数据库。<br><br>　　3. 把XML数据流或文本加载到DataSet。<br><br>　　下面就来详细探讨以上DataSet使用方法的具体实现，使用语言是C＃。<br><br>　　1. 把数据库中的数据通过DataAdapter对象填充DataSet：<br><br>　　掌握DataSet使用方法必须掌握ADO.NET另外一个核心常用成员--数据提供者（Data Provider）。数据提供者（也称为托管提供者Managed Provider）是一个类集合，在.Net FrameWork SDK 1.0中数据提供者分为二种：The SQL Server .NET Data Provider和The OLE DB .NET Data Provider。而到了.Net FrameWork SDK 1.1时，ADO.NET中又增加了The ODBC .NET Data Provider和 The Oracle .NET Data Provider二个数据提供者。The SQL Server .NET Data Provider的操作数据库对象只限于Sql Server 7.0及以上版本，Oracle .NET Data Provider的操作数据库对象只限于Oracle 8.1.7及以上版本。而The OLE DB .NET Data Provider和The ODBC .NET Data Provider可操作的数据库类型就相对多了许多，只要它们在本地分别提供Ole Db提供程序和ODBC提供程序。<br><br>　　在这些数据提供者中都有一个DataAdapter类，如：OLE DB .NET Framework 数据提供者中是 OleDbDataAdapter类，The SQL Server .NET Framework 数据提供者中是SqlDataAdapter类，The ODBC .NET Framework 数据提供者中是OdbcDataAdapter类。通过这些DataAdapter就能够实现从数据库中检索数据并填充 DataSet 中的表。<br><br>　　DataAdapter填充DataSet的过程分为二步：首先通过DataAdapter的SelectCommand属性从数据库中检索出需要的数据。SelectCommand其实是一个Command对象。然后再通过DataAdapter的Fill方法把检索来的数据填充 DataSet。代码清单01就是以Microsoft SQL Server 中的Northwind数据库为对象，C＃使用The SQL Server .NET Data Provider中的SqlDataAdapter填充DataSet的具体实现方法：<br><br>　　代码清单01：<br><br>
<table class=content borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=0>
    <tbody>
        <tr>
            <td height=233>SqlConnection sqlConnection1 = new SqlConnection ( "Data Source=localhost ;Integrated Security=SSPI ;Initial Catalog=Northwind" ) ;<br>//创建数据连接<br>SqlCommand selectCMD = new SqlCommand ( "SELECT CustomerID , CompanyName FROM Customers" , sqlConnection1 ) ;<br>//创建并初始化SqlCommand对象<br>SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter ( ) ;<br>custDA.SelectCommand = selectCMD ;<br>sqlConnection.Open ( ) ;<br>//创建SqlDataAdapter对象，并根据SelectCommand属性检索数据<br>DataSet dsDataSet1 = new DataSet ( ) ;<br>sqlDataAdapter1.Fill ( dsDataSet1 , "Customers" ) ;<br>//使用SqlDataAdapter的Fill方法填充DataSet<br>sqlConnection.Close ( ) ;<br>//关闭数据连接</td>
        </tr>
    </tbody>
</table>
<br>　　对于其他数据提供者的DataAdapter，具体的实现检索数据库中的数据并填充DataSet的实现方法类似于以上方法。<br><br>　　2. 通过DataAdapter对象操作DataSet实现更新数据库：<br><br>　　DataAdapter是通过其Update方法实现以DataSet中数据来更新数据库的。当DataSet实例中包含数据发生更改后，此时调用Update方法，DataAdapter 将分析已作出的更改并执行相应的命令（INSERT、UPDATE 或 DELETE），并以此命令来更新数据库中的数据。如果DataSet中的DataTable是映射到单个数据库表或从单个数据库表生成，则可以利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。使用DataAdapter对象操作DataSet实现更新数据库具体的实现方法，只需把下面的代码清单02添加到代码清单01之后，二者合并即可实现删除Customers数据表中第一行数据：<br><br>　　代码清单02：　<br><br>
<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=0>
    <tbody>
        <tr>
            <td class=content>SqlCommandBuilder sqlCommandBuilder1 = new SqlCommandBuilder ( sqlDataAdapter1 ) ;<br>//以sqlDataAdapter1为参数来初始化SqlCommandBuilder实例<br>dsDataSet1.Tables["Customers"].Rows[0].Delete ( ) ;<br>//删除DataSet中删除数据表Customers中第一行数据<br>sqlDataAdapter1.Update ( dsDataSet1 ,"Customers" ) ;<br>//调用Update方法，以DataSet中的数据更新从数据库<br>dsDataSet1.Tables["Customers"].AcceptChanges ( ) ;</td>
        </tr>
    </tbody>
</table>
<br>　　由于不了解DataSet结构和与数据库关系，很多初学者往往只是更新了DataSet中的数据，就认为数据库中的数据也随之更新，所以当打开数据库浏览时发现并没有更新数据，都会比较疑惑，通过上面的介绍，疑惑应当能够消除了。<br><br>　　3. XML和DataSet：<br><br>　　DataSet中的数据可以从XML数据流或文档创建。并且.Net Framework可以控制加载XML数据流或文档中那些数据以及如何创建DataSet的关系结构。加载XML数据流和文档到DataSet中是可使用DataSet对象的ReadXml方法（注意：ReadXml来加载非常大的文件，则性能会有所下降）。ReadXml 方法将从文件、流或 XmlReader 中进行读取，并将 XML 的源以及可选的 XmlReadMode 参数用作参数。该ReadXml方法读取 XML 流或文档的内容并将数据加载到 DataSet 中。根据所指定的XmlReadMode和关系架构是否已存在，它还将创建DataSet的关系架构。<br>
<p>　<strong>三．DataSet和数据绑定（DataBinding）</strong><br><br>　　数据绑定是数据绑定是绑定技术中使用最频繁，也是最为重要的技术，也可以说是各种.Net开发语言开发数据库应用程序最需要掌握的基本的知识之一。数据绑定之所以很重要，是因为在.Net FrameWork SDK中并没有提供数据库开发的相关组件，即如：DbTextBox、DbLabel等用于数据库开发的常用组件在.Net FrameWork SDK中都没有。而数据绑定技术则能够把TextBox组件"改造"成DbTextBox组件，把Label组件"改造"成DbLabel组件等等。所有这些都与DataSet有直接关系。<br><br>　　数据绑定分成二类：简单型数据绑定和复杂型数据绑定。适用于简单型数据绑定组件一般有Lable、TextBox等，适用于复杂性数据绑定的组件一般有DataGrid、ListBox、ComboBox等。其实简单型数据绑定和复杂性数据绑定并没有明确的区分，只是在组件进行数据绑定时，一些结构复杂一点的组件在数据绑定时操作步骤相近，而另外一些结构简单一点的组件在数据绑定时也比较类似。于是也就产生了二个类别。以下就结合TextBox组件和DataGrid组件分别探讨DataSet在实现简单型数据绑定和复杂性数据绑定作用和具体实现方法。<br><br>　　1. 简单型数据绑定：<br><br>　　简单型数据绑定一般使用这些组件中的DataBindings属性的Add方法把DataSet中某一个DataTable中的某一行和组件的某个属性绑定起来，从而达到显示数据的效果。TextBox组件的数据绑定具体实现方法是在代码清单01后，再添加代码清单03中的代码，代码清单03中的代码是把DataSet中的Customers 数据表中的"CustomerID"的数据和TextBox的Text属性绑定起来，这样DbTextBox就产生了。其他适用于简单型数据绑定组件数据绑定的方法类似与此操作：<br><br>　　代码清单03：
<table class=content width="90%" align=center bgColor=#dadacf>
    <tbody>
        <tr>
            <td>textBox1.DataBindings.Add ( "Text" , dsDataSet1, " Customers. CustomerID " ) ;</td>
        </tr>
    </tbody>
</table>
<br>　　2. 复杂性数据绑定：<br><br>　　复杂性数据绑定一般是设定组件的DataSource属性和DisplayMember属性来完成数据绑定的。DataSource属性值一般设定为要绑定的DataSet，DisplayMember属性值一般设定为要绑定的数据表或数据表中的某一列。DataGrid组件的数据绑定的一般实现方法是在代码清单01后，再添加代码清单04中的代码，代码清单04的功能是把DataSet中的Customers 数据表和DataGrid绑定起来。其他适用于复杂性数据绑定的组件实现数据绑定的方法类似此操作：<br><br>　　代码清单04：<br><br>
<table class=content borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=0>
    <tbody>
        <tr>
            <td height=36>dataGrid1.DataSource = dsDataSet1 ;<br>dataGrid1.DataMember = " Customers " ;</td>
        </tr>
    </tbody>
</table>
<br>　　<strong>四．总结</strong><br><br>　　DataSet类是ADO.NET中一个非常重要的核心成员，它是数据库中的数据在本地计算机中映射成的缓存。对DataSet的任何操作，都是在计算机缓存中完成的。理解这一点是掌握DataSet的第一步。DataSet虽然结构复杂。但只要区分DataSet对象中各个组成部件及其相互关系，掌握也不算太困难。本文覆盖了DataSet的特性、结构、以及具体的使用方法等等，相信这些对您掌握这个ADO.NET中核心成员是有所帮助。</p>
<script event=onload for=window type=text/javascript>ImgLoad(document.getElementById("BodyLabel"));</script></div>
<br>
<img src ="http://www.cnitblog.com/yide/aggbug/35588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2007-10-30 14:06 <a href="http://www.cnitblog.com/yide/archive/2007/10/30/35588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>網頁</title><link>http://www.cnitblog.com/yide/archive/2007/10/14/34842.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Sun, 14 Oct 2007 07:28:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2007/10/14/34842.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/34842.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2007/10/14/34842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/34842.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/34842.html</trackback:ping><description><![CDATA[<p align=center><font size=3>网页代码常用小技巧！<br></font></p>
<p><font size=3>1. oncontextmenu=window.event.returnvalue=false 将彻底屏蔽鼠标右键<br>〈table border oncontextmenu=return(false)〉〈td〉no〈/table〉 可用于Table <br>2. 〈body onselectstart=return false〉 取消选取、防止复制<br>3. onpaste=return false 不准粘贴<br><br>4. oncopy=return false; oncut=return false; 防止复制<br><br>5. 〈link rel=Shortcut Icon href=favicon.ico〉 IE地址栏前换成自己的图标<br><br>6. 〈link rel=Bookmark href=favicon.ico〉 可以在收藏夹中显示出你的图标<br><br>7. 〈input style=ime-mode:-Disabled〉 关闭输入法<br><br>8. 永远都会带着框架 <br>〈script language=javascript〉〈!--<br>if (window == top)top.location.href = frames.htm; //frames.htm为框架网页<br>// --〉〈/script〉<br><br>9. 防止被人frame<br>〈SCRIPT LANGUAGE=javascript〉〈!-- <br>if (top.location != self.location)top.location=self.location;<br>// --〉〈/SCRIPT〉<br><br>10. 网页将不能被另存为<br>〈noscript〉〈iframe src=*.html〉〈/iframe〉〈/noscript〉 <br><br>11. 〈input type=button value=查看网页源代码 <br>onclick=window.location = `view-source:`+ http://www.51js.com/`;〉<br><br>12.删除时确认<br>〈a href=`javascript:if(confirm(确实要删除吗?))location=boos.asp?&amp;areyou=删除&amp;page=1`〉删<br><br>除〈/a〉 <br><br>13. 取得控件的绝对位置<br>//javascript<br>〈script language=javascript〉<br>function getIE(E){<br>var t=e.offsetTop;<br>var l=e.offsetLeft;<br>while(e=e.offsetParent){<br>t+=e.offsetTop;<br>l+=e.offsetLeft;<br>}<br>alert(top=+t+/nleft=+l);<br>}<br>〈/script〉<br><br>//VBScript<br>〈script language=VBScript〉〈!--<br>function getIE()<br>dim t,l,a,b<br>set a=document.all.img1<br>t=document.all.img1.offsetTop<br>l=document.all.img1.offsetLeft<br>while a.tagName〈〉BODY<br>set a = a.offsetParent<br>t=t+a.offsetTop<br>l=l+a.offsetLeft<br>wend<br>msgbox top=&amp;t&amp;chr(13)&amp;left=&amp;l,64,得到控件的位置<br>end function<br>--〉〈/script〉<br><br>14. 光标是停在文本框文字的最后<br>〈script language=javascript〉<br>function cc()<br>{<br>var e = event.srcElement;<br>var r =e.createTextRange();<br>r.moveStart(`character`,e.value.length);<br>r.collapse(true);<br>r.select();<br>}<br>〈/script〉<br>〈input type=text name=text1 value=123 onfocus=cc()〉<br><br>15. 判断上一页的来源<br>javascript:<br>document.referrer<br><br>16. 最小化、最大化、关闭窗口 <br>〈object id=hh1 classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11〉 <br>〈param name=Command value=Minimize〉〈/object〉<br>〈object id=hh2 classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11〉 <br>〈param name=Command value=Maximize〉〈/object〉<br>〈OBJECT id=hh3 classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11〉<br>〈PARAM NAME=Command value=Close〉〈/OBJECT〉<br><br>〈input type=button value=最小化 onclick=hh1.Click()〉<br>〈input type=button value=最大化 onclick=hh2.Click()〉<br>〈input type=button value=关闭 onclick=hh3.Click()〉<br>本例适用于IE<br><br>17.屏蔽功能键Shift,Alt,Ctrl<br>〈script〉<br>function look(){ <br>if(event.shiftKey) <br>alert(禁止按Shift键!); //可以换成ALT　CTRL<br>} <br>document.onkeydown=look; <br>〈/script〉<br><br>18. 网页不会被缓存<br>〈META HTTP-EQUIV=pragma CONTENT=no-cache〉<br>〈META HTTP-EQUIV=Cache-Control CONTENT=no-cache, must-revalidate〉<br>〈META HTTP-EQUIV=expires CONTENT=Wed, 26 Feb 1997 08:21:57 GMT〉<br>或者〈META HTTP-EQUIV=expires CONTENT=0〉<br><br>19.怎样让表单没有凹凸感？<br>〈input type=text style=border:1 solid #000000〉 <br>或<br>〈input type=text style=border-left:none; border-right:none; border-top:none; border-bottom: <br><br>1 solid #000000〉〈/textarea〉<br><br>20.〈div〉〈span〉&amp;〈layer〉的区别？ <br>〈div〉(division)用来定义大段的页面元素，会产生转行 <br>〈span〉用来定义同一行内的元素，跟〈div〉的唯一区别是不产生转行 <br>〈layer〉是ns的标记，ie不支持，相当于〈div〉<br><br><br>21.让弹出窗口总是在最上面:<br>〈body onblur=this.focus();〉<br><br>22.不要滚动条? <br>让竖条没有: <br>〈body style=`overflow:-Scroll;overflow-y:hidden`〉 <br>〈/body〉 <br>让横条没有: <br>〈body style=`overflow:-Scroll;overflow-x:hidden`〉 <br>〈/body〉 <br>两个都去掉？更简单了 <br>〈body scroll=no〉 <br>〈/body〉 <br><br>23.怎样去掉图片链接点击后，图片周围的虚线？<br>〈a href=# onFocus=this.blur()〉〈img src=logo.jpg border=0〉〈/a〉<br><br>24.电子邮件处理提交表单<br>〈form name=form1 method=post action=mailto:****@***.com enctype=text/plain〉 <br>〈input type=submit〉<br>〈/form〉<br><br>25.在打开的子窗口刷新父窗口的代码里如何写？<br>window.opener.location.reload()<br><br>26.如何设定打开页面的大小<br>〈body onload=top.resizeTo(300,200);〉<br>打开页面的位置〈body onload=top.moveBy(300,200);〉<br><br>27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动 <br>〈style〉 <br>body <br>{background-image:url(logo.gif); background-repeat:no-repeat; <br><br>background-position:center;background-attachment: fixed} <br>〈/style〉 <br><br>28. 检查一段字符串是否全由数字组成<br>〈script language=javascript〉〈!--<br>function checkNum(str){return str.match(//D/)==null}<br>alert(checkNum(1232142141))<br>alert(checkNum(123214214a1))<br>// --〉〈/script〉<br><br>29. 获得一个窗口的大小 <br>document.body.clientWidth; document.body.clientHeight<br><br>30. 怎么判断是否是字符<br>if (/[^/x00-/xff]/g.test(s)) alert(含有汉字);<br>else alert(全是字符);<br><br>31.TEXTAREA自适应文字行数的多少<br>〈textarea rows=1 name=s1 cols=27 onpropertychange=this.style.posHeight=this.scrollHeight〉<br>〈/textarea〉<br><br>32. 日期减去天数等于第二个日期<br>〈script language=javascript〉<br>function cc(dd,dadd)<br>{<br>//可以加上错误处理<br>var a = new Date(dd)<br>a = a.valueOf()<br>a = a - dadd * 24 * 60 * 60 * 1000<br>a = new Date(A)<br>alert(a.getFullYear() + 年 + (a.getMonth() + 1) + 月 + a.getDate() + 日)<br>}<br>cc(12/23/2002,2)<br>〈/script〉<br><br>33. 选择了哪一个Radio<br>〈HTML〉〈script language=vbscript〉<br>function checkme()<br>for each ob in radio1<br>if ob.checked then window.alert ob.value<br>next<br>end function<br>〈/script〉〈BODY〉<br>〈INPUT name=radio1 type=radio value=style checked〉style<br>〈INPUT name=radio1 type=radio value=barcode〉Barcode<br>〈INPUT type=button value=check onclick=checkme()〉<br>〈/BODY〉〈/HTML〉<br><br>34.脚本永不出错<br>〈SCRIPT LANGUAGE=javascript〉 <br>〈!-- Hide <br>function killErrors() { <br>return true; <br>} <br>window.onerror = killErrors; <br>// --〉 <br>〈/SCRIPT〉<br><br>35.ENTER键可以让光标移到下一个输入框<br>〈input onkeydown=if(event.keyCode==13)event.keyCode=9〉<br><br>36. 检测某个网站的链接速度：<br>把如下代码加入〈body〉区域中:<br>〈script language=javascript〉<br>tim=1<br>setInterval(tim++,100)<br>b=1<br><br>var autourl=new Array()<br>autourl[1]=http://www.njcatv.net/;<br>autourl[2]=javacool.3322.net<br>autourl[3]=http://www.sina.com.cn/;<br>autourl[4]=http://www.nuaa.edu.cn/;<br>autourl[5]=http://www.cctv.com/;<br><br>function butt(){<br>document.write(〈form name=autof〉)<br>for(var i=1;i〈autourl.length;i++)<br>document.write(〈input type=text name=txt+i+ size=10 value=测试中&#8230;&#8230;〉 =》〈input type=text <br><br>name=url+i+ size=40〉 =》〈input type=button value=GO <br><br>onclick=window.open(this.form.url+i+.value)〉〈br〉)<br>document.write(〈input type=submit value=刷新〉〈/form〉)<br>}<br>butt()<br>function auto(url){<br>document.forms[0][url+b].value=url<br>if(tim〉200)<br>{document.forms[0][txt+b].value=链接超时}<br>else<br>{document.forms[0][txt+b].value=时间+tim/10+秒}<br>b++<br>}<br>function run(){for(var i=1;i〈autourl.length;i++)document.write(〈img <br><br>src=http://+autourl+/+Math.random()+ width=1 height=1 <br><br>onerror=auto(http://;+autourl+`)〉)}<br>run()〈/script〉<br><br>37. 各种样式的光标<br>auto ：标准光标<br>default ：标准箭头<br>hand ：手形光标<br>wait ：等待光标<br>text ：I形光标<br>vertical-text ：水平I形光标<br>no-drop ：不可拖动光标<br>not-allowed ：无效光标<br>help ：?帮助光标<br>all-scroll ：三角方向标<br>move ：移动标<br>crosshair ：十字标<br>e-resize<br>n-resize<br>nw-resize<br>w-resize<br>s-resize<br>se-resize<br>sw-resize<br><br>38.页面进入和退出的特效<br>进入页面〈meta http-equiv=Page-Enter content=revealTrans(duration=x, transition=y)〉<br>推出页面〈meta http-equiv=Page-Exit content=revealTrans(duration=x, transition=y)〉 <br>这个是页面被载入和调出时的一些特效。Duration表示特效的持续时间，以秒为单位。Transition表示使<br><br>用哪种特效，取值为1-23:<br>　　0 矩形缩小 <br>　　1 矩形扩大 <br>　　2 圆形缩小<br>　　3 圆形扩大 <br>　　4 下到上刷新 <br>　　5 上到下刷新<br>　　6 左到右刷新 <br>　　7 右到左刷新 <br>　　8 竖百叶窗<br>　　9 横百叶窗 <br>　　10 错位横百叶窗 <br>　　11 错位竖百叶窗<br>　　12 点扩散 <br>　　13 左右到中间刷新 <br>　　14 中间到左右刷新<br>　　15 中间到上下<br>　　16 上下到中间 <br>　　17 右下到左上<br>　　18 右上到左下 <br>　　19 左上到右下 <br>　　20 左下到右上<br>　　21 横条 <br>　　22 竖条 <br>　　23 以上22种随机选择一种<br><br>39.在规定时间内跳转<br>〈META http-equiv=V=REFRESH content=5;URL=http://www.51js.com〉 <br><br>40.网页是否被检索<br>〈meta name=ROBOTS content=属性值〉<br>　　其中属性值有以下一些:<br>　　属性值为all: 文件将被检索，且页上链接可被查询；<br>　　属性值为none: 文件不被检索，而且不查询页上的链接；<br>　　属性值为index: 文件将被检索；<br>　　属性值为follow: 查询页上的链接；<br>　　属性值为noindex: 文件不检索，但可被查询链接；<br>　　属性值为nofollow: 文件不被检索，但可查询页上的链接。 <br><br>41.变换网页的鼠标光标<br>〈BODY style=CURSOR: url(http://203.73.125.205/~liangmi2/farmfrog01.cur`)〉<br><br>42.怎样实现在任务栏显示小图标的效果？ (要使用绝对地址)<br>有些站点，访问时会在地址栏地址前显出小图标，添加到收藏夹后也在收藏栏中显示图标，<br>这样很好的与其它站点有了区别。 <br>要达到这个效果，先需做出这个图标文件，图像为16*16像素，不要超过16色。文件格式为ico，然后上传至你的网站。<br>然后，在需要的页面中，加上以下html语句到文件的〈head〉和〈/head〉之间（假设以上ico文件的地址http://happyisland.126.com/icon.ico）。<br>〈link REL=SHORTCUT ICONhref=http:〖砺剑〗打了个大揖 笑呵呵地说道：大家好，恭喜发财 ! .island.126.com/icon.ico;〉 <br>如果访问者的浏览器是IE5.0，就不需加任何代码，只要将图标文件上传到网站的根目录下即可。<br>1,META标签里的代码是什么意思？ <br>〈META〉是放于〈HEAD〉与〈/HEAD〉之间的标记.以下是我总结它在网页中最常见的几种。 <br>〈meta name=Keywords content=图片, 新闻, 音乐, 软件〉 <br>该网页的关键字，作用于搜索引擎的登录，事实上它在现在的网站中并没什么用。 <br>〈meta http-equiv=Content-Type content=text/html; charset=gb2312〉 <br>〈meta http-equiv=Content-Type content=text/html; charset=iso-8859-1〉 <br>设定这是 HTML 文件及其编码语系，简体中文网页使用charset=gb2312，繁体中文使用charset=big5，或者不设编码也可，纯英文网页建议使用 iso-8859-1。 <br>〈meta name=GENERATOR content=Microsoft FrontPage 5.0〉 <br>这只表示该网页由什么编辑器写的。 <br>〈meta http-equiv=refresh content=10; url=http://www.hkiwc.com〉 <br>这行较为实用，能于预定秒数内自动转到指定网址。原代码中 10 表示 10秒。 <br><br>2，怎么改变滚动条的颜色，只有ie5.5版本以上才能支持。 <br>这是使用CSS语言，在次说明一下，它和我的浏览器版本有一定的关系。 <br>scrollbar-arrow-color：上下按钮上三角箭头的颜色。 <br>scrollbar-base-color：滚动条的基本颜色。 <br>scrollbar-dark-shadow-color：立体滚动条强阴影的颜色 <br>scrollbar-face-color：立体滚动条凸出部分的颜色 <br>scrollbar-highlight-color：滚动条空白部分的颜色 <br>scrollbar-shadow-color立体滚动条阴影的颜色。<br>scrollbar-track-color:#99CC33;<br>scrollbar-3dlight-color:#A8CBF1; <br>代码如下： <br>〈style〉 <br>〈!-- <br>BODY {<br>scrollbar-face-color:#99CC33;//(立体滚动条凸出部分的颜色) <br>scrollbar-highlight-color:#A8CBF1;//(滚动条空白部分的颜色) <br>scrollbar-shadow-color:#A8CBF1;//(立体滚动条阴影的颜色) <br>scrollbar-arrow-color:#FF9966;//(上下按钮上三角箭头的颜色) <br>scrollbar-base-color:#A8CBF1; //(滚动条的基本颜色) <br>scrollbar-darkshadow-color:#A8CBF1; //(立体滚动条强阴影的颜色)<br>scrollbar-track-color:#99CC33;<br>scrollbar-3dlight-color:#A8CBF1; <br>} <br>--〉 <br>〈/style〉 <br>在这我补充几点： <br>1.让浏览器窗口永远都不出现滚动条。 <br>〈body style=overflow-x:hidden;overflow-y:hidden〉或〈body style=overflow:hidden〉 或〈body scroll=no〉 <br>2，没有水平滚动条 <br>〈body style=overflow-x:hidden〉 <br>3，没有垂直滚动条 <br>〈body style=overflow-y:hidden〉 <br><br><br>3,如何给图片抖动怎做的. <br>〈SCRIPT language=javascript1.2〉 <br>〈!-- <br>var rector=2 <br>var stopit=0 <br>var a=1 <br>var count=0 <br>function init(which){ <br>stopit=0 <br>shake=which <br>shake.style.left=0 <br>shake.style.top=0 <br>} <br>function rattleimage(){ <br>if ((!document.all&amp;&amp;!document.getElementById)||stopit==1||count==100) <br>return <br>count++ <br>if (a==1){ <br>shake.style.top=parseInt(shake.style.top)+rector <br>} <br>else if (a==2){ <br>shake.style.left=parseInt(shake.style.left)+rector <br>} <br>else if (a==3){ <br>shake.style.top=parseInt(shake.style.top)-rector <br>} <br>else{ <br>shake.style.left=parseInt(shake.style.left)-rector <br>} <br>if (a〈4) <br>a++ <br>else <br>a=1 <br>setTimeout(rattleimage(),50) <br>} <br>function stoprattle(which){ <br>stopit=1 <br>count=0 <br>which.style.left=0 <br>which.style.top=0 <br>} <br>//--〉 <br>〈/SCRIPT〉 <br>〈style〉.shakeimage {POSITION: relative} <br>〈/style〉 <br>〈img src=图片的路径 onmouseout=stoprattle(this) onmouseover=init(this);rattleimage() class=shakeimage〉 <br><br>4，在DW如何给水平线加颜色。 <br>在DW中没有此项设置，你只能在HTML中加入代码：〈hr color=red noshade〉按F12的预览在能看到。由于在NC中不支持〈hr〉的COLOR属性，所以在DW中没有此项设置。 <br>　　　 <br>5，如何在网页中实现flash的全屏播放？ <br>只要在调用swf文件的HTML中将WIDTH和HEIGHT的参数设为100％即可，当然也可以在Flash导出HTML文件的设置中进行设置，方法是：打开File菜单；选Publish Settings弹出导出设置对话框；在HTML标签下的Dimensions选项,下拉后选中Percent（百分比）,并在WIDTH 和HEIGHT框中填100.就行了。 <br><br>6,为什么我在DW中插入的Flash动画缺看不找！ <br>如果你没有正确地安装Dreamweaver和Flash，那么在你预览的时候，Dreamweaver会提示你缺少播放的插件，请你按装InstallAXFlash.exe 并从新启动计算机。现在IE6已经捆绑这个程序。 <br><br>7，在Flash中，如果屏蔽鼠标右键?FS命令都是什么意思? <br>fscommand (fullscreen, true/false);（全屏设置，TRUE开，FALSE关） <br>fscommand (showmenu, true/false);（右键菜单设置，TRUE显示，FALSE不显示） <br>fscommand (allowscale, true/false);（缩放设置，TRUE自由缩放，FALSE调整画面不影响影片本身的尺寸） <br>fscommand (trapallkeys, true/false);（快捷键设置，TRUE快捷键开，FALSE快捷键关） <br>fscommand (exec);（EXE程序调用） <br>fscommand (quit);（退出关闭窗口） <br><br>8，Flash中什么是隐形按钮。 <br>利用button中的hit帧来制作只有感应区域而完全透明的按钮。 <br><br>9，如何给Flash动画做链接。 <br>Dreamweaver是不能给Flash制作链接的，只能在Flash中用geturl()加链接，然后再插入Dreamweaver中。 <br><br>10，DW中的层的技巧。 <br>层是可以嵌套的，我个人给大家一个技巧，在层面板中按住CTRL再拖放层到你想去成为其子层的地方就行了，我认为这是最简单直观的方法了。 <br><br>11，如何改变鼠标的形状？ <br>在Dreamweaver4中CSS样式面板： <br>按CTR+SHIFT+E--出现样式表对话框,点击NEW，出现编辑对话框,在左边最后一项extensions-cursor 选择你要改的指针形式就可以了，然后把你要想改变的地方运用样式表，如果整页都有在〈body bgcolor=#003063 text=#ffffff id=all〉中加入就行了。 <br>〈span style=cursor:X`〉样例〈/span〉 <br>这里选择（文本）作为对象，还可以自己改为其他的，如link等。 <br>x可以等于=hand（手形）、crosshair（十字）、text（文本光标）、wait（顾名思义啦）、default（默认效果）、help（问号）、e-size（向右箭头）、ne-resize（向右上的箭头）、nw-resize（向左上的箭头）、w-resize（向左的箭头）、sw-resize（左下箭头）、s-resize（向下箭头）、se-resize（向右下箭头）、auto（系统自动给出效果）。 <br><br>12，用CSS做邮票，看看吧！ <br>〈input type=button value=我象不象邮票？ style=height:80px;border:2px dashed #cccccc〉 <br><br><br>13，经常上网的朋友可能会到过这样一些网站，一进入首页立刻会弹出一个窗口，怎么做呢！ <br>这javascript代码即可实现，摘录蓝色论坛。 <br>【1、最基本的弹出窗口代码】 <br>其实代码非常简单： <br>〈SCRIPT LANGUAGE=javascript〉 <br>〈!-- <br>window.open (`page.html`) <br>--〉 <br>〈/SCRIPT〉 <br>因为着是一段javascripts代码，所以它们应该放?lt;SCRIPT LANGUAGE=javascript〉标签和〈/script〉之间。〈!-- 和 --〉是对一些版本低的浏览器起作用，在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 <br>window.open (`page.html`) 用于控制弹出新的窗口page.html，如果page.html不与主窗口在同一路径下，前面应写明路径，绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以，只是不要混用。 <br>这一段代码可以加入HTML的任意位置，〈head〉和〈/head〉之间可以，〈body bgcolor=#003063 text=#ffffff id=all〉间〈/body〉也可以，越前越早执行，尤其是页面代码长，又想使页面早点弹出就尽量往前放。 <br>【2、经过设置后的弹出窗口】 <br>下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。 <br>我们来定制这个弹出的窗口的外观，尺寸大小，弹出的位置以适应该页面的具体情况。 <br>〈SCRIPT LANGUAGE=javascript〉 <br>〈!-- <br>window.open (`page.html`, `newwindow`, `height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no`) <br>//写成一行 <br>--〉 <br>〈/SCRIPT〉 <br>参数解释： <br>〈SCRIPT LANGUAGE=javascript〉 js脚本开始； <br>window.open 弹出新窗口的命令； <br>`page.html` 弹出窗口的文件名； <br>`newwindow` 弹出窗口的名字（不是文件名），非必须，可用空``代替； <br>height=100 窗口高度； <br>width=400 窗口宽度； <br>top=0 窗口距离屏幕上方的象素值； <br>left=0 窗口距离屏幕左侧的象素值； <br>toolbar=no 是否显示工具栏，yes为显示； <br>menubar，scrollbars 表示菜单栏和滚动栏。 <br>resizable=no 是否允许改变窗口大小，yes为允许； <br>location=no 是否显示地址栏，yes为允许； <br>status=no 是否显示状态栏内的信息（通常是文件已经打开），yes为允许； <br>〈/SCRIPT〉 js脚本结束 <br>【3、用函数控制弹出窗口】 <br>下面是一个完整的代码。 <br>〈html〉 <br>〈head〉 <br>〈script LANGUAGE=javascript〉 <br>〈!-- <br>function openwin() { window.open (page.html, newwindow, height=100, width=400, toolbar= <br>no, menubar=no, scrollbars=no, resizable=no, location=no, status=no) <br>//写成一行 <br>} <br>//--〉 <br>〈/script〉 <br>〈/head〉 <br>〈body onload=openwin()〉 <br>&#8230;任意的页面内容&#8230; <br>〈/body〉 <br>〈/html〉 <br>这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。 <br>怎么调用呢？ <br>方法一：〈body onload=openwin()〉 浏览器读页面时弹出窗口； <br>方法二：〈body onunload=openwin()〉 浏览器离开页面时弹出窗口； <br>方法三：用一个连接调用： <br>〈a href=# onclick=openwin()〉打开一个窗口〈/a〉 <br>注意：使用的&#8220;#&#8221;是虚连接。 <br>方法四：用一个按钮调用： <br>〈input type=button onclick=openwin() value=打开窗口〉 <br><br><br>14，没有用表格写的，让大家随便看看，没什么。 <br>〈html〉 <br>〈head〉 <br>〈title〉江南荷花扇面〈/title〉 <br>〈meta http-equiv=Content-Type content=text/html; charset=gb2312〉 <br>〈style type=text/css〉 <br>〈!-- <br>.font1 { font-size: 12px; color: #999999; text-decoration: none} <br>a { font-size: 12px; color: #999999; text-decoration: none} <br>a:hover { font-size: 12px; color: #000000; text-decoration: none} <br>--〉 <br>〈/style〉 <br>〈/head〉 <br>〈body bgcolor=#FFFFFF text=#000000〉 <br>〈div class=font1 style=writing-mode=tb-rl;height:200px width=300〉 <br>〈p〉盛夏　　　　　　尚　涛　 <br>〈p〉〈a href=index.htm〉一夜露痕黄粉香　袁运甫 〈/a〉 <br>〈p〉瑶池昨夜新凉　　王金岭 <br>〈p〉一朵白莲随意开　吴冠南 <br>〈p〉新雨迎秋欲满塘　齐辛民 <br>〈p〉十里荷香　　　　齐辛民 <br>〈p〉濯清莲而不妖　　卢世曙 <br>〈/div〉 <br>〈/body〉 <br>〈/html〉 <br><br><br>15,IE6已支持自定义cursor! <br>语法格式 cursor:url(图标) //cur或是ani文件. <br>cur就是WINDOWS中的光标(cursor)文件，光标文件与图标（ICON)文件除了文件头有一个位置的值不同外，实际是一样的。 <br>ani是WINDOWS中的动画光标（图标）文件。 <br>〈style type=text/css〉 <br>〈!-- <br>.unnamed1 { cursor:url(arrow2c.cur)} <br>--〉 <br>〈/style〉 <br><br>16,用marquee做的滚动字幕.这也我刚看到论坛的朋友在问。 <br>语法： <br>align=# | top | middle| bottom //对齐方式) <br>BEHAVIOR=ALTERNATE | SCROLL | SLIDE //移动的方式 <br>BGCOLOR=color//底色区域颜色 <br>DIRECTION=DOWN | LEFT | RIGHT | UP //移动的方向 <br>Loop=n //循环次数（默认是循环不止） <br>Scrolldelay=milliseconds//延时 <br>height=# width=# //区域面积 <br>hspace=# vspace=# //空白区域 <br>scrollamount=# //移动的速度 <br>〈marquee align=top behavior=ALTERNATE BGCOLOR=#000000 height=60 width=433 scrollamount=5〉〈/marquee〉<br><br>17，在FLASH5中也存在一些字体，打散后变成一团的事是为什么？有解决的办法吗。 <br>这是大家很常见的问题！可能是对字库支持的不好！我个是做成透明的gif图片格式，然后倒入。 <br><br>18，flash的网页里&#8220;加入收藏夹&#8221;功能怎么实现？ <br>在as中加getUrl(java script:window.external.addFavorite(http://skydesigner.51.net`,`我的工作室`)) <br><br>19，在Flash中，文本的动态属性和输入属性的区别。 <br>input text在运行时可被用户或程序改变其值。 <br>ynamic text仅允许被程序修改。 <br><br><br>20,怎样在IE中调用Dreamweaver进行编辑. <br>相信很多在使用WinME或Window2000的朋友，会遇见是个问题。很简单，把我们笔记本程序打开，保存为一个 *.reg 文件。双击它将信息添加到注册表即可。 <br>REGEDIT4 <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver] <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell] <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell\edit] <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell\edit\command] <br>@=\c:\\Program Files\\Macromedia\\Dreamweaver 4\\dreamweaver.exe\ \%1\ <br><br>21，设置表格虚线。 <br>方法一：作一个1X2的图。半黑半白，再利用表格作成线。 <br>方法二：在css里面设，要IE5。5才支持这种效果。 <br>style=BORDER-LEFT: #000000 1PX DASHED; BORDER-RIGHT: #000000 1PX DASHED; BORDER-TOP: #000000 1PX DASHED; BORDER-BOTTOM: #000000 1PX DASHED <br><br>22,看看在网页中调用HHCtrl控件效果。 <br>代码如下： <br>〈object id=HHC type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11〉〈/object〉〈script〉HHC.TextPopup(哈哈,大家好,我是闪梦!,,50,5,128255,346751);〈/script〉 <br><br><br>22，如何让一张图片有浅到深的渐变。 <br>〈SCRIPT language=javascript1.2〉 <br>〈!-- <br>function high(which2){ <br>theobject=which2 <br>highlighting=setInterval(highlightit(theobject),50) <br>} <br>function low(which2){ <br>clearInterval(highlighting) <br>which2.filters.alpha.opacity=40 <br>} <br>function highlightit(cur2){ <br>if (cur2.filters.alpha.opacity〈100) <br>cur2.filters.alpha.opacity+=10 <br>else if (window.highlighting) <br>clearInterval(highlighting) <br>} <br>〈/script〉 <br>〈img onmouseout=low(this) onmouseover=high(this) style=FILTER: alpha(opacity=40)src=logo.gif 〉 <br><br>23,双击鼠标左键来滚动背景，单击停止。 <br>〈SCRIPT language=javascript〉 <br>var currentpos,timer; <br>function initialize() <br>{ <br>timer=setInterval(scrollwindow(),16); <br>} <br>function sc(){ <br>clearInterval(timer); <br>} <br>function scrollwindow() <br>{ <br>currentpos=document.body.scrollTop; <br>window.scroll(0,++currentpos); <br>if (currentpos != document.body.scrollTop) <br>sc(); <br>} <br>document.onmousedown=sc <br>document.ondblclick=initialize <br>〈/SCRIPT〉 <br><br>24,如何在同一页面设置不同文字链接效果的样式. <br>代码如下： <br>〈HTML〉〈HEAD〉〈TITLE〉如何在同一页面设置不同文字链接效果的样式〈/TITLE〉 <br>〈meta http-equiv=Content-Type content=text/html; charset=gb2312〉 <br>〈style type=text/css〉 <br>〈!-- <br>a:hover { font-size: 9pt; color: #FF0000; text-decoration: underline} <br>a:link { font-size: 9pt; color: #006699; text-decoration: underline} <br>a:visited { font-size: 9pt; color: #006699; text-decoration: underline} <br>a:active { font-size: 9pt; color: #FF0000; text-decoration: none} <br>a.r1:hover { font-size: 9pt; color: #FF0000; text-decoration: underline overline} <br>a.r1:link { font-size: 9pt; color: #000000; text-decoration: underline overline} <br>a.r1:visited { font-size: 9pt; color: #99CC00; text-decoration: underline overline} <br>a.r1:active { font-size: 9pt; color: #000000; text-decoration: underline overline} <br>--〉 <br>〈/style〉 <br>〈/head〉 <br>〈body bgcolor=#FFFFFF text=#000000〉 <br>〈a href=#〉下划线链接 〈/a〉 <br>〈p〉〈/p〉 <br>〈a href=# class=r1〉双下划线链接〈/a〉 <br>〈/BODY〉 <br>〈/HTML〉 <br>补充说明： <br>a:hover 表示鼠标划过时的样式. <br>a:link 表示链接的样式. <br>a:active 表示当前活动连接的样式. <br>a:visited 表示已经访问过的连接的样式. <br><br>25, 用CSS给文字加入阴影效果和文字描边效果。 <br>.glow{FONT-SIZE: 9pt; FILTER: Glow(Color=#000000, Strength=1)} <br>//文字描边效果 <br>.shadow {FONT-SIZE: 9pt; FILTER: DropShadow(OffX=1, OffY=1, DropShadow(OffX=1, OffY=1, color:#111111); COLOR: #ffffff; FONT-FAMILY: 宋体} <br>//加入阴影效果 <br>补充说明： <br>　　这两种滤镜要想实现效果，必须加在如：〈td class=glow或shadow 〉〈div〉xxxxxxxxx〈/div〉〈/td〉上 <br>，并且要留有足够的空间能够显示阴影或描边，否则会出现半截的阴影或描边现象。 <br><br>26,如何给做带颜色的下拉菜单。 <br>〈select style=FONT-SIZE: 10px; COLOR: #ffffff; FONT-FAMILY: Verdana;BACKGROUND-COLOR: #ff6600; size=1 〉 <br>〈option selected〉:: Dreamweaver4 ::〈/option〉 <br>〈option〉::Flash5::〈/option〉 <br>〈option〉::Firewoks4::〈/option〉 <br>〈/select〉 <br><br>27,关于DW4的表格中的亮边框和暗边框问题。 <br>在DW4的表格面板中并没有亮边框和暗边框的属性设置，因为NC不支持,只有你在代码中添加了。 <br>bordercolorlight=#999999 bordercolordark=#000000 <br>　　你也可以用Css定义一个class。例如： <br>〈style〉 <br>.bordercolor { bordercolorlight: #999999; bordercolordark: #000000 } <br>〈/style〉 <br>　　然后在要加效果的表格里加?lt;table class=bordercolor〉 <br><br>28,自动显示主页最后更新日期. <br>〈script〉 <br>document.write(最后更新日期：+document.lastModified+) <br>〈/script〉 <br><br>29,如何让滚动条出现在左边？ <br>我想居然在论坛中有人发表了这段代码，很有意思，它的确照顾一些左撇子，呵呵！ <br>〈html dir=rtl〉 <br>〈body bgcolor=#000000 text=#FFFFFF〉 <br>〈table height=18 width=212 align=center bgcolor=#FFFFFF dir=ltr cellspacing=1 　cellpadding=0〉 <br>〈tr〉 <br>〈td bgcolor=#FF0000 〉是不是你的滚动条在左边啊〈/td〉 <br>〈/tr〉 <br>〈/table〉 <br>〈/body〉 <br>〈/html〉 <br><br>30,如何加入网址前面的小图标？ <br>　　首先,您必须了解所谓的图标（Icon）是一种特殊的图形文件格式，它是以 .ico 作为扩展名。你可用在网上找一个制作图标软件，它具有特有的规格：图标的大小为 16 * 16（以像素为单位）；颜色不得超过 16 色。 在该网页文件的 HEAD 部分加入下面的内容：〈LINK REL=SHORTCUT ICON HREF= http://skydesigner.51.net/图标文件名〉,并放在该网页的根目录下。 <br><br>31,在800*600显示器中，如何不让网页水平出现滚动条！ <br>设至〈body leftmargin=0 topmargin=0〉，网页中的表格宽度为778。 <br><br>32,关于〈!DOTYPE〉的说明解释。 <br>在网页中，经常会看到〈!DOCTYPE HTML PUBLIC`-//W3C//DTD HTML 4.01//EN`〉，是声明HTML文件的版本信息。 <br><br>33, 用图片来关闭窗体. <br>〈A href=java script:window.close()〉〈IMG height=20 width=20 alt=关闭窗口 src=close.gif border=0〉〈/A〉 <br>补充说明：如何使用了ACTIVEX！,不再警告窗口？ <br>〈html〉 <br>〈head〉 <br>〈object id=closes type=application/x-oleobject <br>classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11〉 <br>〈param name=Command value=Close〉〈/object〉 <br>〈/head〉 <br>〈body bgcolor=#003063 text=#ffffff id=all〉 〈a href=# onclick=closes.Click();〉关闭窗口无提示〈/a〉 <br>〈/body〉 <br>〈/html〉 <br><br>34,禁止鼠标右键查看网页源代码。 <br>〈SCRIPT language=javascript〉 <br>function click() <br>{if (event.button==2) {alert(`你好,欢迎光临！`) }} <br>document.onmousedown=click <br>〈/SCRIPT〉 <br>补充说明： <br>鼠标完全被封锁,可以屏蔽鼠标右键和网页文字。 <br>〈 body oncontextmenu=return false ondragstart=return false onselectstart=return false〉 <br><br>35,通过按钮来查看网页源代码。 <br>〈input type=BUTTON value=查看源代码 onClick= `window.location = view-source: + window.location.href` name=BUTTON〉 <br><br>36,怎么用文字联结实现按钮的SUBMIT功能？ <br>〈a href=# onclick=formname.submit()〉OK〈/a〉 <br>这段文字要放在form里。formname是这里要写在form中的name,〈form name=form111〉那么就应该是form111.submit() <br><br>37,如何做一个空链接？ <br>加# <br><br>38,利用〈IFRAME〉来给网页中插入网页。 <br>　　经常我看到很多网页中又有一个网页，还以为是用了框架，其实不然，是用了〈IFRAME〉,它只适用于IE，NS可是不支持〈IFRAME〉的，但围着的字句只有在浏览器不支援 iframe 标记时才会显示，如〈noframes〉一样，可以放些提醒字句之类的话。 <br>你注意啊！下面请和我学习它的用法。 <br>分析代码：〈iframe src=iframe.html name=test align=MIDDLE width=300 height=100 marginwidth=1 marginheight=1 frameborder=1 scrolling=Yes〉 〈/iframe〉<br>　　src=iframe.html <br>　　用来显示〈IFRAME〉中的网页来源，必要加上相对或绝对路径。 <br>　　name=test <br>　　这是连结标记的 target 参数所需要的。 <br>　　align=MIDDLE <br>　　可选值为 left, right, top, middle, bottom，作用不大 。 <br>　　width=300 height=100 <br>　　框窗的宽及长，以 pixels 为单位。 <br>　　marginwidth=1 marginheight=1 <br>　　该插入的文件与框边所保留的空间。 <br>　　frameborder=1 <br>　　使用 1 表示显示边框， 0 则不显示。（可以是 yes 或 no） <br>　　scrolling=Yes <br>　　使用 Yes 表示容许卷动（内定）， No 则不容许卷动。 <br><br>39,请问＜tbody＞的用法？ <br>tbody用法据说是加强对表格的控制能力的.例如： <br>　〈table〉〈tbody〉&#8230;&#8230;..〈/tbody〉〈/table〉 <br>　　tbody代码如果不是你用手写的话,只有在你用IE5打开一个网页的时候， 把它另存为 <br>一下，你的另存为的文件在表格中就会生成tbody代码。(即便你的表格根本就没有 <br>tbody代码，IE5另存为的时候也会给你生成)。 <br><br>40,Alt和Title都是提示性语言标签，请注意它们之间的区别。 <br>　　在我们浏览网页时，当鼠标停留在图片对象或文字链接上时，在鼠标的右下角有时会出现一个提示信息框。对目标进行一定的注释说明。在一些场合，它的作用是很重要的。 <br>alt 用来给图片来提示的。Title用来给链接文字或普通文字提示的。 <br>用法如下： <br>　　　〈p Title=给链接文字提示〉文字〈/p〉 <br>　　　〈a href=# Title=给链接文字提示〉文字〈/a〉 <br>　　　〈img src=图片.gif alt=给图片提示〉 <br>补充知识：〈TITLE〉〈ALT〉里面如何多行换行？在源代码里Enter回车。 <br>〈a href=# Title=个人简历 <br>姓名：张培 <br>网名：我是闪梦 <br>性别：男的，不是女的。 <br>爱好：网页制作，软件开发〉个人简历〈/a〉 <br>例如：个人简历 <br><br>41, 用javascript代码来实现闪烁按钮。 <br>〈body〉 <br>〈form method=POST action=--WEBBOT-SELF--〉 <br>〈input type=button name=SUB value=闪烁 id=flashit style=BORDER: 1px solid ;BACKGROUND-COLOR: #FFFFFF〉 <br>〈/form〉 <br>〈script〉 <br>if (document.all&amp;&amp;document.all.flashit) <br>{ <br>var flashelement=document.all.flashit <br>if (flashelement.length==null) <br>flashelement[0]=document.all.flashit <br>function changecolor(which) <br>{ <br>if (flashelement[which].style.color==`#800000`) <br>flashelement[which].style.color=#0063A4 <br>else <br>flashelement[which].style.color=#800000 <br>} <br>if (flashelement.length==null) <br>setInterval(changecolor(0),1000) <br>else <br>for (i=0;i〈flashelement.length;i++) <br>{ <br>var tempvariable=`setInterval(changecolor(`+i+`),`+`1000)` <br>eval(tempvariable) <br>} <br>} <br>〈/script〉 <br>〈/body〉 <br><br>42,CSS给图片定义颜色边框。 <br>img { border: 1px solid red} <br><br>43,在DW中如何使插入的FLASH透明。 <br>方法一：选中swf,打开原代码窗口，在〈/object〉前输入:〈param name=wmode value=transparent〉 <br>方法二：在Flash中的Flie&#8594;Publist Settings&#8594;HTML&#8594;Window Mode选择transparent <br><br>44,在DW编辑文本中，如何输入一个空格呢？ <br>输入空格的问题，在DW似乎已成了一个老生常谈的问题。通过将输入法调整到全角模式就可以避免了。本以人工智能ABC为例.按Shift+Space切换到全角状态。 <br><br>45,为何我的DW中图形显示不正常。 <br>第一种：可能是因为你定义并正在使用一个site，而你的HTML文件或者图片不在这个site包含的区域之内，因此dreamweaver使用file协议来 <br>描述图象的绝对路径，可惜IE不支持src中使用file协议，所以图象就显示不出来了。 <br>第二种：可能是放图片的文件夹或图片名为中文，也显示不到网页中去。 <br><br>46,如何在本地机器上测试flash影片的loading？ <br>我想这可能是很多人在问的题了，其实很简单，在Test时，选选View-〉Show Streaming就可以看到了。 <br><br>47,在网页中做出一根竖的线有几种办法. <br>第一种方法：用一个像素图的办法！ <br>如果你用Dreamwever的Edit&#8594;Preferences&#8230;&#8594;Layout View中的Spacer Image给你创建了一个缺省名为：spacer.gif的一个像素图文件 。 <br>代码中： <br>〈table border=0 cellspacing=0 cellpadding=0〉 <br>〈tr〉 <br>〈td bgcolor=#FF0000 height=200 〉〈img src=spacer.gif width=1 height=1〉〈/td〉 <br>〈/tr〉 <br>〈/table〉 <br>第二种方法：用表格填颜色的办法！把〈td〉 〈/td〉中的 删掉 . <br>〈table border=0 cellspacing=0 cellpadding=0〉 <br>〈tr〉 <br>〈td bgcolor=#FF0000 height=200 width=1〉〈/td〉 <br>〈/tr〉 <br>〈/table〉 <br>第三种方法：用水平条。 <br>〈hr color=red width=1 size=100%〉 <br><br>48, 关于鼠标拖动,改变层大小。──看看微软的做法. <br>〈script〉 <br>document.execCommand(2D-position,false,true); <br>〈/script〉 <br>〈DIV contentEditable=true〉 <br>〈DIV style=WIDTH: 300px; POSITION: absolute; HEIGHT: 100px; BACKGROUND-COLOR: red〉移动层〈/DIV〉 <br>〈/DIV〉 <br><br>49 ,点击连接文字加入收藏夹。 <br>〈a href=java script:window.external.AddFavorite(http://www.263.net`, `269家园`)〉点击加入收藏夹〈/a〉 </font></p>
<font size=3>&nbsp;</font> 
<img src ="http://www.cnitblog.com/yide/aggbug/34842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2007-10-14 15:28 <a href="http://www.cnitblog.com/yide/archive/2007/10/14/34842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Excel----枢纽分析表</title><link>http://www.cnitblog.com/yide/archive/2007/10/11/34704.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 11 Oct 2007 08:07:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2007/10/11/34704.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/34704.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2007/10/11/34704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/34704.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/34704.html</trackback:ping><description><![CDATA[<p><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp;&nbsp; i:Integer;<br>&nbsp;&nbsp; v , sheet ,WPT,workbooks ,workbook,PivotCaches ,PivotCache ,PivotTables : variant ;<br>begin<br>&nbsp;&nbsp;&nbsp; try<br>&nbsp;&nbsp; v:=createOleObject('Excel.application');<br>&nbsp;&nbsp; v.workbooks.add;<br>&nbsp;&nbsp; sheet:=v.workbooks[1].worksheets[1];<br>&nbsp;&nbsp; sheet.Range[sheet.cells[1,1],sheet.cells[1,15]].Select;<br>&nbsp;&nbsp; //SetupFont(FtBiaoKai,xlLeft,xlCenter,12,false);<br>&nbsp;&nbsp; v.Selection.RowHeight:=48;<br>&nbsp;&nbsp; v.Selection.HorizontalAlignment:=&nbsp; 1&nbsp; ;<br>&nbsp;&nbsp; v.Selection.Font.Size := 20;<br>&nbsp;&nbsp; sheet.Cells[1,7]:='表';<br>&nbsp;&nbsp; v.Selection.Merge;<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; for i := 4 to 5 do<br>&nbsp;&nbsp; begin<br>&nbsp;&nbsp; sheet.Columns[i].ColumnWidth:=16;<br>&nbsp;&nbsp; end ;</p>
<p>&nbsp;&nbsp; sheet.Range[sheet.cells[2,1],sheet.cells[2,6]].Select;<br>&nbsp;&nbsp;&nbsp; v.Selection.HorizontalAlignment:=&nbsp; 1&nbsp; ;<br>&nbsp;&nbsp;&nbsp; v.Selection.Font.Bold:=true ;</p>
<p>&nbsp;&nbsp; sheet.Cells[2,1]:='lei';<br>&nbsp;&nbsp; sheet.Cells[2,2]:='cang';<br>&nbsp;&nbsp; sheet.Cells[2,3]:='WEEK';<br>&nbsp;&nbsp; sheet.Cells[2,4]:='Usable';<br>&nbsp;&nbsp; sheet.Cells[2,5]:='Actual';</p>
<p><br>&nbsp;&nbsp;&nbsp; //sheet.Range('A2:E5').Select&nbsp; ;<br>&nbsp;&nbsp;&nbsp; sheet.Range[sheet.cells[2,1],sheet.cells[5,5]].Select;<br>&nbsp;&nbsp;&nbsp; workbook := v.ActiveWorkbook;</p>
<p>&nbsp;&nbsp;&nbsp; PivotCaches := workbook.PivotCaches;<br>&nbsp;&nbsp;&nbsp; PivotCache := PivotCaches.add(1, 'Sheet1!R2C1:R5C5');&nbsp; //(SourceType:=2);//<br>&nbsp;&nbsp;&nbsp; PivotTables := PivotCache.CreatePivotTable('' ,'name',1);<br>&nbsp;&nbsp; // PivotTables.name('AgingReport');</p>
<p>&nbsp;&nbsp;&nbsp; workbook.ActiveSheet.PivotTableWizard ;<br>&nbsp;&nbsp;&nbsp; //workbook.TableDestination := workbook.ActiveSheet.Cells(3, 1) ;<br>&nbsp;&nbsp; // workbook.ActiveSheet.Cells(3, 1).Select&nbsp;&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp; v.Charts.Add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>&nbsp;&nbsp; // v.Chart.LocationWhere := '$00000001' ;//&nbsp; xlLocationAsNewSheet&nbsp;&nbsp;&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp; workbook.ShowPivotTableFieldList := True&nbsp;&nbsp;&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('cat).Orientation := 3;//'xlPageField'&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('cat).Position := 1 ;<br>&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('f1').Orientation := 1;//'xlPageField'&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('f1').Position := 1 ;<br>&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('WEEK').Orientation := 1;//'xlPageField'&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('WEEK').Position := 1 ;<br>&nbsp;&nbsp; // v.ActiveChart.PivotLayout.PivotTable.PivotFields(' Time').Orientation := 1;//'xlPageField'&nbsp;&nbsp; ;<br>&nbsp;&nbsp; // v.ActiveChart.PivotLayout.PivotTable.PivotFields(' Time').Position := 1 ;</p>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.AddDataField(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('Usable Time'), '計數 ', -4112 )&nbsp; ;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Workbook.ShowPivotTableFieldList := False&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //v.CommandBars('PivotTable').Visible := False&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.ActiveChart.PivotLayout.PivotTable.PivotFields('計數 ').Function := -4157&nbsp;&nbsp;&nbsp;&nbsp; ;</p>
<p>&nbsp;&nbsp; v.Visible:=True;<br>&nbsp;&nbsp; <br>&nbsp; except<br>&nbsp;&nbsp;&nbsp;&nbsp; on e:exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do messagedlg('Create Excel Can''t work!'+#13+#10+e.message,mtWarning,[mbOk],0);<br>&nbsp; end;</p>
<p>end;<br></p>
<img src ="http://www.cnitblog.com/yide/aggbug/34704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2007-10-11 16:07 <a href="http://www.cnitblog.com/yide/archive/2007/10/11/34704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DELPHI超级Internet控件集--INDY</title><link>http://www.cnitblog.com/yide/archive/2007/04/13/25672.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Fri, 13 Apr 2007 03:06:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2007/04/13/25672.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/25672.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2007/04/13/25672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/25672.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/25672.html</trackback:ping><description><![CDATA[你有没有用DELPHI开发Internet程序？是不是常常会烦恼FastNet组件为什么没有源代码？有很多问题，不看源代码，真不知道是什么问题。是不是也觉得FastNet组件支持的网络协议还不够多？现在不用烦恼了，有一套功能很丰富、使用很方便、开放源代码的免费INTERNET控件集可以解决你的烦恼。这套控件集就是INDY了。<br><br>　　什么是INDY？它有什么功能
<table cellSpacing=0 cellPadding=0 align=left>
    <tbody>
        <tr>
            <td><span id=ad_tech_mid_big></span></td>
        </tr>
    </tbody>
</table>
？怎么用？就让我慢慢道来。<br>　　INDY的全名是Internet Direct（也叫Winshoes），它是一套开放源代码的Internet控件集，它支持大部分流行的Internet协议，包括TCP、UDP、DNS、ICMP、FINGER、FTP、GOPHER、HTTP、POP3、SMTP、TELNET、WHOIS等，支持BASE64、MD2、MD4、MD5等编解码，提供INTERNET流行协议的客户端和服务器控件。INDY控件集的客户端和服务器控件都有完整、详细的源代码例程和帮助文件，用户可以根据这些例子，简单方便快速的建造各种服务器程序，例如WEB服务器、TELNET服务器、IRC服务器、TCP、UDP服务器等，而这些服务器都是支持多线程的。用户也可以很简单的编写出各种客户端程序，例如EMAIL、FINGER、FTP、PING、TELNET等。著名的OICQ使用的协议是UDP，有了INDY你可以使用UDP服务器和UDP客户端写出一个和OICQ较劲的东东来。<br><br>　　INDY是完全基于SOCKET阻塞工作模式（后面讨论）的开发库，现在已经支持BORLAND DELPHI、C++ BUIDER和最新的Kylix（LINUX里的DELPHI）等开发平台。目前，INDY的最新正式发行版本是8.0版，最新BETA版本是8.1版。INDY8.0支持DELPHI 4、DELPHI 5、C++BUIDER 4、C++BUIDER 5、Kylix等版本。Kylix已经把INDY作为标准组件打包到发行包里了。而且据说DELPHI 6.0将会把INDY作为它的INTERNET基本组件，由此可见INDY的强悍实力。<br><br>　　看了怎么多吸引人的特性，是不是迫不及待的想得到它了？不用急，你可以随时到INDY的主页上下载一份免费的源代码来安装，INDY的网址是（http://www.nevrona.com/Indy/），主页上会公布最新的INDY消息，发表更新的源代码和相关文档。如果在开发过程中遇到什么问题，可以通过访问BORLAND公司的新闻组（news://newsgroups.borland.com）里面的borland.public.delphi.internet.winsock和borland.public.cppbuilder.internet两个主题来获得免费的技术支持。INDY小组会及时回答在新闻组里提出的关于INDY的问题。你也可以把使用INDY的心得技巧、发现的BUG，发表到新闻组里，为INDY的发展作出一份贡献。<br><br>　　INDY的安装很简单，现在INDY的网站正式提供WINDOWS版本的安装程序供下载，支持Kylix的版本则包含在BORLAND公司的Kylix发行包里，不过由于BORLAND修改了一些文件的原因，导致INDY的例程都不能编译成功，所以INDY网站提供了针对Kylix修改的例程文件下载。下载了安装程序后，执行安装程序（请先把你的开发平台程序关掉），设置好安装路径（图一），选择好你的开发平台的种类（DELPHI或C++BUIDER）和版本（图二），就可以了。等安装完成，打开你的开发平台程序，就可以在控件栏里发现新加的三个栏目：INDY SERVERS、INDY CLIENTS、INDY MISC（图三）。分别是INDY的服务器类、客户端类、杂项控件。而安装了INDY的目录里，包含有INDY的控件文件和控件源代码以及例程。你还可以在网站上下载它的帮助文件，帮助文件里包括各个控件的详细说明，是应用好INDY的必备手册。<br><br>　　安装好INDY后，可以开始尝试INDY的新鲜好味道了。INDY提供的丰富例程就是绝好的教材。先编译几个例程，看看INDY的强大功能吧。要想熟练的使用好INDY，就得多多学习这些例程和参考帮助文件。<br><br>　　熟悉WINSOCK编程的读者一定会觉得奇怪吧，为什么INDY是是完全基于SOCKET阻塞工作模式的呢？异步模式（非阻塞模式）是WINSOCK的一大特点，为什么不用呢？<br><br>　　其实，之所以大多数WINDOWS下的INTERNET程序都使用异步模式，这和WINSOCK的历史有关。当WINSOCK被移植到WINDOWS的时候，当时的WINDOWS操作系统还是WINDOWS 3.1，而WINDOWS 3.1是不支持多线程的，不象UNIX下可以使用FORK来运行多进程。在WINDOWS 3.1下，如果使用阻塞模式，在通讯时会锁定用户界面使程序没有响应，为了避免这种情况，WINSOCK就引入异步模式这个新特性。而使用异步模式来编制INTERNET程序也就成了WINDOWS程序员的经典教条。但是，随着新的WINDOWS操作系统的出现，如WINDOWS 95、NT、98、ME、2000等，这些操作系统开始支持多线程。异步模式这个教条仍然深入人心，使很多程序员会下意识的拒绝使用阻塞模式。<br><br>　　事实上，UNIX下的SOCKET只支持阻塞模式（现在UNXI的SOCKET有了一些新的非阻塞特性，不过绝大多数应用仍然使用阻塞模式）。阻塞模式具有以下几个比异步模式优越的特点：<br><br>　　编程更简单，可以把所有处理SOCKET的代码放在一起，顺序执行，而不用分散在不同的事件处理代码段里。 <br><br>　　更容易移植到UNIX，使用INDY的DELPHI程序，可以不做太多（甚至不做）修改，就可以把WINDOWS的DELPHI源代码拿到LINUX下，用Kylix来编译成LINUX下的网络程序。 <br><br>　　更容易在多线程程序里使用，由于阻塞模式的代码可以放在一起，可以很方便的把这些代码包裹在线程里面来使用，而不象异步模式，需要针对不同的事件，设置不同的处理代码。 <br><br>　　为了兼顾简单可靠和高效，INDY是基于阻塞模式工作的。阻塞模式需要等待任务完成才返回，这样，当主线程里调用阻塞任务运行时，程序不能处理用户界面的消息。INDY提供了一个控件TidAntiFreeze来解决这个问题。只要在你的程序里，简单的填加一个TidAntiFreeze控件到任何地方（随便往FORM上放），不需要写任何代码（最多把超时时间改一下），就可以很好的解决用户界面不响应的问题。<br><br>　　下面有两段示范代码，可以看出INDY控件的程序代码和其他使用异步模式的Internet控件的程序代码相比，是多么的简洁：<br><br>代码一：INDY控件的程序代码（IndyClient代表INDY控件的一般形式）<br><br>with IndyClient do begin<br><br>Connect; <br><br>Try<br><br>// 在这里写入你的处理代码<br><br>finally<br><br>Disconnect; <br><br>end;<br><br>end;<br><br>代码二：其他控件的程序代码（SocketComponent代表一般的Internet控件） <br><br>procedure TFormMain.TestOnClick(Sender: TComponent);<br><br>begin<br><br>with SocketComponent do begin<br><br>Connect; try<br><br>while not Connected do begin<br><br>if IsError then begin<br><br>Abort;<br><br>end;<br><br>Application.ProcessMessages;<br><br>OutData := 'Data To send';<br><br>while length(OutData) &gt; 0 do begin<br><br>Application.ProcessMessages;<br><br>end;<br><br>finally Disconnect; end;<br><br>end;<br><br>end;<br><br>procedure TFormMain.OnConnectError;<br><br>begin<br><br>IsError := True;<br><br>end;<br><br>procedure TFormMain.OnRead;<br><br>var<br><br>i: Integer;<br><br>begin<br><br>i := SocketComponent.Send(OutData);<br><br>OutData := Copy(OutData, i + 1, MaxInt);<br><br>end;<br><br>关于INDY的简单介绍就到这里了，感兴趣的朋友就去下载一个用吧，你一定会喜欢上它的。 
<img src ="http://www.cnitblog.com/yide/aggbug/25672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2007-04-13 11:06 <a href="http://www.cnitblog.com/yide/archive/2007/04/13/25672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用delphi写excel文件</title><link>http://www.cnitblog.com/yide/archive/2007/03/20/24328.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 20 Mar 2007 02:29:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2007/03/20/24328.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/24328.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2007/03/20/24328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/24328.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/24328.html</trackback:ping><description><![CDATA[
		<div class="tit">用delphi写excel文件</div>
		<div class="date">2007-03-18 21:12</div>
		<table style="TABLE-LAYOUT: fixed">
				<tbody>
						<tr>
								<td>
										<div class="cnt">
												<p>1.引用:      Excel2000, OleServer,Comobj, StdCtrls</p>
												<p>2.声明变量:     ExcelApplication,Sheet1:Variant;(全局的或局部的).</p>
												<p>3.创建及写入:  </p>
												<p>try<br />     ExcelApplication:=CreateOleObject('Excel.Application');<br />except<br />     Showmessage('Sorry,你可能?FONT COLOR="#000000"&gt;]有安裝Excel');<br />     abort;<br />end;<br />ExcelApplication.Visible:=true;<br />ExcelApplication.Workbooks.Add(xlWBatWorkSheet);<br />Sheet1:=ExcelApplication.Workbooks[1].Worksheets['sheet1'];<br />Sheet1.Name:='Delphi控制Excel Chart';<br />Sheet1.Cells.item[1,1]:='姓名';     //第1行,第1列</p>
												<p>4.使用图表</p>
												<p>var Cell1,Cell2,Cell3,Cell4,Range1,Range2:Variant;</p>
												<p>//向工作表中添加內嵌圖表﹐Add方法中的四個參數分別表示與儲存格A1的左邊距﹑頂部邊距﹑以及圖表的寬度and高度﹔<br />Sheet1.ChartObjects.add(10, 60, 500, 280);<br />sheet1.ChartObjects[1].Activate; //激活當前圖表<br />sheet1.ChartObjects[1].Chart.charttype:=xl3DColumnClustered; //指定圖表類型﹕立體叢集直條圖<br />sheet1.ChartObjects[1].Chart.seriescollection.ADD[Range2];     //建立新數例<br />sheet1.ChartObjects[1].Chart.seriescollection[1].values:=Range2; //指定新數例值<br />sheet1.ChartObjects[1].Chart.seriesCollection[1].hasdatalabels:=True; //顯示圖表中數列的資料標簽﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MinimumScale:=100;//設定數值座標軸的最小刻度值﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MaximumScale:=200;//設定數值座標軸的最大刻度值﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MajorUnit:=10; //設定數值座標的主要單位﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MinorUnit:=10; //設定數值座標的次要單位﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlCategory].HasTitle:=True;<br />sheet1.ChartObjects[1].Chart.Axes[xlCategory].AxisTitle.Text:='星期';     //類別座標軸標簽。<br />sheet1.ChartObjects[1].Chart.Axes[xlCategory].CategoryNames:=Range1;<br />sheet1.ChartObjects[1].Chart.HasLegend:=false;//不顯示圖例<br />sheet1.ChartObjects[1].Chart.ChartArea.Fill.Visible:=true; //圖表區域填滿<br />sheet1.ChartObjects[1].Chart.ChartArea.Fill.ForeColor.SchemeColor:= 28;     //前景色彩﹔<br />sheet1.ChartObjects[1].Chart.ChartArea.Fill.BackColor.SchemeColor:= 42;     //背景色彩﹔<br />sheet1.ChartObjects[1].Chart.Rotation :=44; // 以度為單位傳回或設定立體圖表檢視的旋轉值﹔<br />sheet1.ChartObjects[1].Chart.walls.Interior.ColorIndex:=28;<br />//如果指定圖表的座標軸為直角﹐并與圖表的轉角或仰角無關﹐則為True,僅適用于立體折線圖﹐直條圖與橫條圖﹔<br />sheet1.ChartObjects[1].Chart.RightAngleAxes := True;<br />sheet1.ChartObjects[1].Chart.ChartGroups(1).VaryByCategories:=true;//對每個資料標號指定不同的色彩或圖樣.</p>
												<p>
												</p>
												<p>////////////////////////////////////////////////////////////////////////////////////////////////////</p>
												<p>以下是完整文档</p>
												<p>unit Unit1;</p>
												<p>interface</p>
												<p>uses<br />    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br />Dialogs</p>
												<p>, Excel2000, OleServer,Comobj, StdCtrls;</p>
												<p>type<br />    TForm1 = class(TForm)<br />      Button1: TButton;<br />      procedure Button1Click(Sender: TObject);<br />    private<br />    { Private declarations }<br />    //==================================<br />    ExcelApplication,Sheet1:Variant;<br />    public<br />      { Public declarations }<br />    end;</p>
												<p>var<br />    Form1: TForm1;</p>
												<p>implementation</p>
												<p>{$R *.dfm}</p>
												<p>procedure TForm1.Button1Click(Sender: TObject);<br />var Cell1,Cell2,Cell3,Cell4,Range1,Range2:Variant;<br />begin<br />try<br />    ExcelApplication:=CreateOleObject('Excel.Application');<br />except<br />    Showmessage('Sorry,你可能?FONT COLOR="#000000"&gt;]有安裝Excel');<br />    abort;<br />end;<br />ExcelApplication.Visible:=true;<br />ExcelApplication.Workbooks.Add(xlWBatWorkSheet);<br />Sheet1:=ExcelApplication.Workbooks[1].Worksheets['sheet1'];<br />Sheet1.Name:='Delphi控制Excel Chart';<br />Sheet1.Cells.item[1,1]:='Excel Chart -范例';<br />Sheet1.Cells.item[2,1]:='星期';         //第二行,第1列<br />Sheet1.Cells.item[2,2]:='星期一';<br />Sheet1.Cells.item[2,3]:='星期二';<br />Sheet1.Cells.item[2,4]:='星期三';       //我要知道sheet的所有属性<br />Sheet1.Cells.item[2,5]:='星期四';<br />Sheet1.Cells.item[2,6]:='星期五-';<br />Sheet1.Cells.item[2,7]:='星期六';<br />Sheet1.Cells.item[2,8]:='星期日';<br />Sheet1.Cells.item[3,1]:='銷售量';<br />Sheet1.Cells.item[3,2]:=115;<br />Sheet1.Cells.item[3,3]:=112;<br />Sheet1.Cells.item[3,4]:=156;<br />Sheet1.Cells.item[3,5]:=148;<br />Sheet1.Cells.item[3,6]:=132;<br />Sheet1.Cells.item[3,7]:=196;<br />Sheet1.Cells.item[3,8]:=162;<br />Cell1:=Sheet1.Cells.item[2,2];<br />Cell2:=Sheet1.Cells.item[2,8];<br />Cell3:=Sheet1.Cells.item[3,2];<br />Cell4:=Sheet1.Cells.item[3,8];<br />Range1:=sheet1.Range[cell1,cell2]; //設定Chart類別座標軸的取值范圍<br />Range2:=sheet1.Range[cell3,cell4]; //設定Chart數值座標軸的取值范圍<br />Range1.Borders.Color:=27;<br />Range2.Borders.Color:=6;<br />//向工作表中添加內嵌圖表﹐Add方法中的四個參數分別表示與儲存格A1的左邊距﹑頂部邊距﹑以及圖表的寬度and高度﹔<br />Sheet1.ChartObjects.add(10, 60, 500, 280);<br />sheet1.ChartObjects[1].Activate; //激活當前圖表<br />sheet1.ChartObjects[1].Chart.charttype:=xl3DColumnClustered; //指定圖表類型﹕立體叢集直條圖<br />sheet1.ChartObjects[1].Chart.seriescollection.ADD[Range2];    //建立新數例<br />sheet1.ChartObjects[1].Chart.seriescollection[1].values:=Range2; //指定新數例值<br />sheet1.ChartObjects[1].Chart.seriesCollection[1].hasdatalabels:=True; //顯示圖表中數列的資料標簽﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MinimumScale:=100;//設定數值座標軸的最小刻度值﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MaximumScale:=200;//設定數值座標軸的最大刻度值﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MajorUnit:=10; //設定數值座標的主要單位﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlValue].MinorUnit:=10; //設定數值座標的次要單位﹔<br />sheet1.ChartObjects[1].Chart.Axes[xlCategory].HasTitle:=True;<br />sheet1.ChartObjects[1].Chart.Axes[xlCategory].AxisTitle.Text:='星期';    //類別座標軸標簽。<br />sheet1.ChartObjects[1].Chart.Axes[xlCategory].CategoryNames:=Range1;<br />sheet1.ChartObjects[1].Chart.HasLegend:=false;//不顯示圖例<br />sheet1.ChartObjects[1].Chart.ChartArea.Fill.Visible:=true; //圖表區域填滿<br />sheet1.ChartObjects[1].Chart.ChartArea.Fill.ForeColor.SchemeColor:= 28;    //前景色彩﹔<br />sheet1.ChartObjects[1].Chart.ChartArea.Fill.BackColor.SchemeColor:= 42;    //背景色彩﹔<br />sheet1.ChartObjects[1].Chart.Rotation :=44; // 以度為單位傳回或設定立體圖表檢視的旋轉值﹔<br />sheet1.ChartObjects[1].Chart.walls.Interior.ColorIndex:=28;<br />//如果指定圖表的座標軸為直角﹐并與圖表的轉角或仰角無關﹐則為True,僅適用于立體折線圖﹐直條圖與橫條圖﹔<br />sheet1.ChartObjects[1].Chart.RightAngleAxes := True;<br />sheet1.ChartObjects[1].Chart.ChartGroups(1).VaryByCategories:=true;//對每個資料標號指定不同的色彩或圖樣.<br />end;</p>
												<p>
												</p>
												<p>
														<br />
												</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/yide/aggbug/24328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2007-03-20 10:29 <a href="http://www.cnitblog.com/yide/archive/2007/03/20/24328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE 函數</title><link>http://www.cnitblog.com/yide/archive/2006/12/07/20167.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 07 Dec 2006 02:11:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2006/12/07/20167.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/20167.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2006/12/07/20167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/20167.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/20167.html</trackback:ping><description><![CDATA[
		<p class="content" style="MARGIN: 4px 2px 0px">PL/SQL单行函数和组函数详解<br />　函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数，这些函数都可被称为SQL或PL/SQL语句，函数主要分为两大类：<br /><br />　　 单行函数<br /><br />　　 组函数 <br /><br />　　本文将讨论如何利用单行函数以及使用规则。<br /><br />　　SQL中的单行函数<br /><br />　　SQL和PL/SQL中自带很多类型的函数，有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据，因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDER BY等子句中，例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等单行函数。<br />SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')FROM empWhere UPPER(ename) Like 'AL%'ORDER BY SOUNDEX(ename)<br /><br />　　单行函数也可以在其他语句中使用，如update的SET子句，INSERT的VALUES子句，DELET的WHERE子句,认证考试特别注意在SELECT语句中使用这些函数，所以我们的注意力也集中在SELECT语句中。<br /><br />　　NULL和单行函数<br /><br />　　在如何理解NULL上开始是很困难的，就算是一个很有经验的人依然对此感到困惑。NULL值表示一个未知数据或者一个空值，算术操作符的任何一个操作数为NULL值，结果均为提个NULL值,这个规则也适合很多函数，只有CONCAT,DECODE,DUMP,NVL,REPLACE在调用了NULL参数时能够返回非NULL值。在这些中NVL函数时最重要的，因为他能直接处理NULL值，NVL有两个参数：NVL(x1,x2),x1和x2都式表达式，当x1为null时返回X2,否则返回x1。<br /><br />　　下面我们看看emp数据表它包含了薪水、奖金两项，需要计算总的补偿<br />column name emp_id salary bonuskey type pk nulls/unique nn,u nnfk table datatype number number numberlength 11.2 11.2<br /><br />　　不是简单的将薪水和奖金加起来就可以了，如果某一行是null值那么结果就将是null，比如下面的例子：<br />update empset salary=(salary+bonus)*1.1<br /><br />　　这个语句中，雇员的工资和奖金都将更新为一个新的值，但是如果没有奖金，即 salary + null,那么就会得出错误的结论，这个时候就要使用nvl函数来排除null值的影响。<br />所以正确的语句是：<br />update empset salary=(salary+nvl(bonus,0)*1.1<br />单行字符串函数<br /><br />　　单行字符串函数用于操作字符串数据，他们大多数有一个或多个参数，其中绝大多数返回字符串<br /><br />　　ASCII()<br />　　c1是一字符串，返回c1第一个字母的ASCII码，他的逆函数是CHR()<br />SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122<br /><br />　　CHR(＜i＞)[NCHAR_CS]<br />　　i是一个数字，函数返回十进制表示的字符<br />select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z B<br /><br />　　CONCAT(,)<br />　　c1,c2均为字符串，函数将c2连接到c1的后面，如果c1为null,将返回c2.如果c2为null,则返回c1，如果c1、c2都为null，则返回null。他和操作符||返回的结果相同<br />select concat('slobo ','Svoboda') username from dualusernameslobo Syoboda<br /><br />　　INITCAP()<br />　　c1为一字符串。函数将每个单词的第一个字母大写其它字母小写返回。单词由空格，控制字符，标点符号限制。<br />select INITCAP('veni,vedi,vici') Ceasar from dualCeasarVeni,Vedi,Vici<br /><br />　　INSTR(,[,＜i＞[,]])<br />　　c1,c2均为字符串，i,j为整数。函数返回c2在c1中第j次出现的位置，搜索从c1的第i个字符开始。当没有发现需要的字符时返回0,如果i为负数，那么搜索将从右到左进行，但是位置的计算还是从左到右，i和j的缺省值为1.<br />select INSTR('Mississippi','i',3,3) from dualINSTR('MISSISSIPPI','I',3,3)11select INSTR('Mississippi','i',-2,3) from dualINSTR('MISSISSIPPI','I',3,3)2<br /><br />　　INSTRB(,[,i[,j])<br />　　与INSTR（）函数一样，只是他返回的是字节，对于单字节INSTRB()等于INSTR()<br /><br />　　LENGTH()<br />　　c1为字符串，返回c1的长度，如果c1为null，那么将返回null值。<br />select LENGTH('Ipso Facto') ergo from dualergo10<br /><br />　　LENGTHb()<br />　　与LENGTH()一样，返回字节。<br /><br />　　lower()<br />　　返回c的小写字符，经常出现在where子串中<br />select LOWER(colorname) from itemdetail WHERE LOWER(colorname) LIKE '%white%'COLORNAMEWinterwhite<br /><br />　　LPAD(,＜i＞[,])<br />　　c1,c2均为字符串，i为整数。在c1的左侧用c2字符串补足致长度i,可多次重复，如果i小于c1的长度，那么只返回i那么长的c1字符，其他的将被截去。c2的缺省值为单空格，参见RPAD。<br />select LPAD(answer,7,'') padded,answer unpadded from question;PADDED UNPADDED Yes YesNO NOMaybe maybe<br /><br />　　LTRIM(,)<br />　　把c1中最左边的字符去掉，使其第一个字符不在c2中，如果没有c2，那么c1就不会改变。<br />select LTRIM('Mississippi','Mis') from dualLTRppi<br /><br />　　RPAD(,＜i＞[,]) <br />　　在c1的右侧用c2字符串补足致长度i,可多次重复，如果i小于c1的长度，那么只返回i那么长的c1字符，其他的将被截去。c2的缺省值为单空格,其他与LPAD相似<br /><br />　　RTRIM(,)<br />　　把c1中最右边的字符去掉，使其第后一个字符不在c2中，如果没有c2，那么c1就不会改变。<br /><br />　　REPLACE(,[,])<br />　　c1,c2,c3都是字符串，函数用c3代替出现在c1中的c2后返回。<br />select REPLACE('uptown','up','down') from dualREPLACEdowntown<br /><br />　　STBSTR(,＜i＞[,])<br />　　c1为一字符串，i,j为整数，从c1的第i位开始返回长度为j的子字符串，如果j为空，则直到串的尾部。<br />select SUBSTR('Message',1,4) from dualSUBSMess<br /><br />　　SUBSTRB(,＜i＞[,])<br />　　与SUBSTR大致相同，只是I,J是以字节计算。<br /><br />　　SOUNDEX()<br />　　返回与c1发音相似的词<br />select SOUNDEX('dawes') Dawes SOUNDEX('daws') Daws, SOUNDEX('dawson') from dualDawes Daws DawsonD200 D200 D250<br /><br />　　TRANSLATE(,,)<br />　　将c1中与c2相同的字符以c3代替<br />select TRANSLATE('fumble','uf','ar') test from dualTEXTramble <br /><br />　　TRIM([[]] from c3)<br />　　将c3串中的第一个，最后一个，或者都删除。<br />select TRIM(' space padded ') trim from dual TRIMspace padded<br /><br />　　UPPER()<br />　　返回c1的大写，常出现where子串中<br />select name from dual where UPPER(name) LIKE 'KI%'NAMEKING<br />单行数字函数<br /><br />　　单行数字函数操作数字数据，执行数学和算术运算。所有函数都有数字参数并返回数字值。所有三角函数的操作数和值都是弧度而不是角度，oracle没有提供内建的弧度和角度的转换函数。<br /><br />　　ABS()<br />　　返回n的绝对值<br /><br />　　ACOS()<br />　　反余玄函数，返回-1到1之间的数。n表示弧度<br />select ACOS(-1) pi,ACOS(1) ZERO FROM dualPI ZERO3.14159265 0 <br /><br />　　ASIN()<br />　　反正玄函数，返回-1到1，n表示弧度<br /><br />　　ATAN()<br />　　反正切函数，返回n的反正切值，n表示弧度。<br /><br />　　CEIL()<br />　　返回大于或等于n的最小整数。<br /><br />　　COS()<br />　　返回n的余玄值，n为弧度<br /><br />　　COSH()<br />　　返回n的双曲余玄值，n 为数字。<br />select COSH(&lt;1.4&gt;) FROM dualCOSH(1.4)2.15089847<br /><br />　　EXP()<br />　　返回e的n次幂，e=2.71828183.<br /><br />　　FLOOR()<br />　　返回小于等于N的最大整数。<br /><br />　　LN()<br />　　返回N的自然对数，N必须大于0<br /><br />　　LOG(,)<br />　　返回以n1为底n2的对数<br /><br />　　MOD()<br />　　返回n1除以n2的余数，<br /><br />　　POWER(,)<br />　　返回n1的n2次方<br /><br />　　ROUND(,)<br />　　返回舍入小数点右边n2位的n1的值，n2的缺省值为0，这回将小数点最接近的整数，如果n2为负数就舍入到小数点左边相应的位上，n2必须是整数。<br />select ROUND(12345,-2),ROUND(12345.54321,2) FROM dualROUND(12345,-2) ROUND(12345.54321,2)12300 12345.54<br /><br />　　SIGN()<br />　　如果n为负数，返回-1,如果n为正数，返回1，如果n=0返回0.<br /><br />　　SIN（)<br />　　返回n的正玄值,n为弧度。<br /><br />　　SINH()<br />　　返回n的双曲正玄值,n为弧度。<br /><br />　　SQRT()<br />　　返回n的平方根,n为弧度<br /><br />　　TAN（)<br />　　返回n的正切值,n为弧度<br /><br />　　TANH()<br />　　返回n的双曲正切值,n为弧度<br /><br />　　TRUNC(,)<br />　　返回截尾到n2位小数的n1的值，n2缺省设置为0，当n2为缺省设置时会将n1截尾为整数，如果n2为负值，就截尾在小数点左边相应的位上。<br /><br />　　单行日期函数<br /><br />　　单行日期函数操作DATA数据类型，绝大多数都有DATA数据类型的参数，绝大多数返回的也是DATA数据类型的值。<br /><br />　　ADD_MONTHS(,＜i＞)<br />　　返回日期d加上i个月后的结果。i可以使任意整数。如果i是一个小数，那么数据库将隐式的他转换成整数，将会截去小数点后面的部分。<br /><br />　　LAST_DAY()<br />　　函数返回包含日期d的月份的最后一天 <br /><br />　　MONTHS_BETWEEN(,)<br />　　返回d1和d2之间月的数目,如果d1和d2的日的日期都相同，或者都使该月的最后一天，那么将返回一个整数，否则会返回的结果将包含一个分数。<br /><br />　　NEW_TIME(,,)<br />　　d1是一个日期数据类型，当时区tz1中的日期和时间是d时，返回时区tz2中的日期和时间。tz1和tz2时字符串。<br /><br />　　NEXT_DAY(,)<br />　　返回日期d后由dow给出的条件的第一天，dow使用当前会话中给出的语言指定了一周中的某一天，返回的时间分量与d的时间分量相同。<br />select NEXT_DAY('01-Jan-2000','Monday') "1st Monday",NEXT_DAY('01-Nov-2004','Tuesday')+7 "2nd Tuesday") from dual;1st Monday 2nd Tuesday03-Jan-2000 09-Nov-2004 <br /><br />　　ROUND([,])<br />　　将日期d按照fmt指定的格式舍入，fmt为字符串。<br /><br />　　SYADATE<br />　　函数没有参数，返回当前日期和时间。<br /><br />　　TRUNC([,]) <br />　　返回由fmt指定的单位的日期d.<br />单行转换函数<br /><br />　　单行转换函数用于操作多数据类型，在数据类型之间进行转换。<br /><br />　　CHARTORWID()<br />　　c 使一个字符串，函数将c转换为RWID数据类型。<br />SELECT test_id from test_case where rowid=CHARTORWID('AAAA0SAACAAAALiAAA') <br /><br />　　CONVERT(,[,])<br />　　c尾字符串，dset、sset是两个字符集，函数将字符串c由sset字符集转换为dset字符集，sset的缺省设置为数据库的字符集。<br /><br />　　HEXTORAW()<br />　　x为16进制的字符串，函数将16进制的x转换为RAW数据类型。<br /><br />　　RAWTOHEX()<br />　　x是RAW数据类型字符串，函数将RAW数据类转换为16进制的数据类型。<br /><br />　　ROWIDTOCHAR()<br />　　函数将ROWID数据类型转换为CHAR数据类型。<br /><br />　　TO_CHAR([[,)<br />　　x是一个data或number数据类型，函数将x转换成fmt指定格式的char数据类型，如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符，以及货币符号。<br />NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"<br /><br />　　TO_DATE([,[,）<br />　　c表示字符串，fmt表示一种特殊格式的字符串。返回按照fmt格式显示的c,nlsparm表示使用的语言。函数将字符串c转换成date数据类型。<br /><br />　　TO_MULTI_BYTE()<br />　　c表示一个字符串，函数将c的担子截字符转换成多字节字符。<br /><br />　　TO_NUMBER([,[,)<br />　　c表示字符串，fmt表示一个特殊格式的字符串，函数返回值按照fmt指定的格式显示。nlsparm表示语言，函数将返回c代表的数字。<br /><br />　　TO_SINGLE_BYTE()<br />　　将字符串c中得多字节字符转化成等价的单字节字符。该函数仅当数据库字符集同时包含单字节和多字节字符时才使用<br /><br />　　其它单行函数<br /><br />　　BFILENAME( <br />,)<br />　　dir是一个directory类型的对象，file为一文件名。函数返回一个空的BFILE位置值指示符，函数用于初始化BFILE变量或者是BFILE列。<br /><br />　　DECODE(,,[,,,[])<br />　　x是一个表达式，m1是一个匹配表达式，x与m1比较，如果m1等于x，那么返回r1,否则,x与m2比较，依次类推m3,m4,m5....直到有返回结果。<br /><br />　　DUMP(,[,[,[,]]])<br />　　x是一个表达式或字符，fmt表示8进制、10进制、16进制、或则单字符。函数返回包含了有关x的内部表示信息的VARCHAR2类型的值。如果指定了n1,n2那么从n1开始的长度为n2的字节将被返回。<br /><br />　　EMPTY_BLOB()<br />　　该函数没有参数，函数返回 一个空的BLOB位置指示符。函数用于初始化一个BLOB变量或BLOB列。<br /><br />　　EMPTY_CLOB()<br />　　该函数没有参数，函数返回 一个空的CLOB位置指示符。函数用于初始化一个CLOB变量或CLOB列。<br /><br />　　GREATEST()<br />　　exp_list是一列表达式，返回其中最大的表达式，每个表达式都被隐含的转换第一个表达式的数据类型，如果第一个表达式是字符串数据类型中的任何一个，那么返回的结果是varchar2数据类型，同时使用的比较是非填充空格类型的比较。<br /><br />　　LEAST()<br />　　exp_list是一列表达式，返回其中最小的表达式，每个表达式都被隐含的转换第一个表达式的数据类型，如果第一个表达式是字符串数据类型中的任何一个，将返回的结果是varchar2数据类型，同时使用的比较是非填充空格类型的比较。<br /><br />　　UID<br />　　该函数没有参数，返回唯一标示当前数据库用户的整数。<br /><br />　　USER<br />　　返回当前用户的用户名<br /><br />　　USERENV()<br />　　基于opt返回包含当前会话信息。opt的可选值为：<br /><br />　　ISDBA　 　　会话中SYSDBA脚色响应，返回TRUE <br />　　SESSIONID 　返回审计会话标示符<br />　　ENTRYID 　　返回可用的审计项标示符 <br />　　INSTANCE　　在会话连接后，返回实例标示符。该值只用于运行Parallel 服务器并且有 多个实例的情况下使用。<br />　　LANGUAGE　　返回语言、地域、数据库设置的字符集。<br />　　LANG　　　　返回语言名称的ISO缩写。<br />　　TERMINAL　　为当前会话使用的终端或计算机返回操作系统的标示符。<br /><br />　　VSIZE()<br />　　x是一个表达式。返回x内部表示的字节数。<br />SQL中的组函数<br /><br />　　组函数也叫集合函数，返回基于多个行的单一结果，行的准确数量无法确定，除非查询被执行并且所有的结果都被包含在内。与单行函数不同的是，在解析时所有的行都是已知的。由于这种差别使组函数与单行函数有在要求和行为上有微小的差异.<br /><br />　　组（多行）函数<br /><br />　　与单行函数相比，oracle提供了丰富的基于组的，多行的函数。这些函数可以在select或select的having子句中使用，当用于select子串时常常都和GROUP BY一起使用。<br /><br />　　AVG([{DISYINCT|ALL}])<br />　　返回数值的平均值。缺省设置为ALL.<br />SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.empAVG(SAL) AVG(ALL SAL) AVG(DISTINCT SAL)1877.94118 1877.94118 1916.071413<br /><br />　　COUNT({*|DISTINCT|ALL} )<br />　　返回查询中行的数目，缺省设置是ALL,*表示返回所有的行。<br /><br />　　MAX([{DISTINCT|ALL}])<br />　　返回选择列表项目的最大值，如果x是字符串数据类型，他返回一个VARCHAR2数据类型，如果X是一个DATA数据类型，返回一个日期，如果X是numeric数据类型，返回一个数字。注意distinct和all不起作用，应为最大值与这两种设置是相同的。<br /><br />　　MIN([{DISTINCT|ALL}])<br />　　返回选择列表项目的最小值。<br /><br />　　STDDEV([{DISTINCT|ALL}])<br />　　返回选者的列表项目的标准差，所谓标准差是方差的平方根。<br /><br />　　SUM([{DISTINCT|ALL}])<br />　　返回选择列表项目的数值的总和。<br /><br />　　VARIANCE([{DISTINCT|ALL}])<br />　　返回选择列表项目的统计方差。<br /><br />　　用GROUP BY给数据分组<br /><br />　　正如题目暗示的那样组函数就是操作那些已经分好组的数据，我们告诉数据库用GROUP BY怎样给数据分组或者分类，当我们在SELECT语句的SELECT子句中使用组函数时，我们必须把为分组或非常数列放置在GROUP BY子句中，如果没有用group by进行专门处理，那么缺省的分类是将整个结果设为一类。<br />select stat,counter(*) zip_count from zip_codes GROUP BY state;ST ZIP_COUNT-- ---------AK 360AL 1212AR 1309AZ 768CA 3982<br /><br />　　在这个例子中，我们用state字段分类；如果我们要将结果按照zip_codes排序,可以用ORDER BY语句，ORDER BY子句可以使用列或组函数。<br />select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;ST COUNT(*)-- --------NY 4312PA 4297TX 4123CA 3982<br /><br />　　用HAVING子句限制分组数据<br /><br />　　现在你已经知道了在查询的SELECT语句和ORDER BY子句中使用主函数，组函数只能用于两个子串中，组函数不能用于WHERE子串中，例如下面的查询是错误的：<br />错误SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' AND SUM(sale_amount)&gt;10000 GROUP BY sales_clerk<br /><br />　　这个语句中数据库不知道SUM()是什么，当我们需要指示数据库对行分组，然后限制分组后的行的输出时，正确的方法是使用HAVING语句：<br />SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' GROUP BY sales_clerkHAVING SUM(sale_amount)&gt;10000;<br /><br />　　嵌套函数<br /><br />　　函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置，函数遵循由内到外，由左到右的原则。嵌套技术一般用于象DECODE这样的能被用于逻辑判断语句IF....THEN...ELSE的函数。<br /><br />　　嵌套函数可以包括在组函数中嵌套单行函数，或者组函数嵌套入单行函数或组函数中。比如下面的例子：<br />SELECT deptno, GREATEST(COUNT(DISTINCT job),COUNT(DISTINCT mgr) cnt,COUNT(DISTINCT job) jobs,COUNT(DISTINCT mgr) mgrsFROM empGROUP BY deptno;DEPTNO CNT JOBS MGRS------ --- ---- ----10 4 4 220 4 3 430 3 3 2 </p>
		<br />
<img src ="http://www.cnitblog.com/yide/aggbug/20167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2006-12-07 10:11 <a href="http://www.cnitblog.com/yide/archive/2006/12/07/20167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer函数</title><link>http://www.cnitblog.com/yide/archive/2006/12/05/20076.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 05 Dec 2006 01:31:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2006/12/05/20076.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/20076.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2006/12/05/20076.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/20076.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/20076.html</trackback:ping><description><![CDATA[
		<div id="Content">
				<p>1.字符串函数 <br />长度与分析用 </p>
				<p>datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 </p>
				<p>substring(expression,start,length) 不多说了,取子串 </p>
				<p>right(char_expr,int_expr) 返回字符串右边int_expr个字符 </p>
				<p>字符操作类 </p>
				<p>upper(char_expr) 转为大写 </p>
				<p>lower(char_expr) 转为小写 </p>
				<p>space(int_expr) 生成int_expr个空格 </p>
				<p>replicate(char_expr,int_expr)复制字符串int_expr次 </p>
				<p>reverse(char_expr) 反转字符串 </p>
				<p>stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从 </p>
				<p>start开始的length个字符用char_expr2代替 </p>
				<p>ltrim(char_expr) rtrim(char_expr) 取掉空格 </p>
				<p>
						<br />ascii(char) char(ascii) 两函数对应,取ascii码,根据ascii吗取字符 </p>
				<p>
						<br />字符串查找 </p>
				<p>charindex(char_expr,expression) 返回char_expr的起始位置 </p>
				<p>patindex("%pattern%",expression) 返回指定模式的起始位置,否则为0 </p>
				<p>
						<br />2.数学函数 </p>
				<p>abs(numeric_expr) 求绝对值 </p>
				<p>ceiling(numeric_expr) 取大于等于指定值的最小整数 </p>
				<p>exp(float_expr) 取指数 </p>
				<p>floor(numeric_expr) 小于等于指定值得最大整数 </p>
				<p>pi() 3.1415926......... </p>
				<p>power(numeric_expr,power) 返回power次方 </p>
				<p>rand([int_expr]) 随机数产生器 </p>
				<p>round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入 </p>
				<p>sign(int_expr) 根据正数,0,负数,,返回+1,0,-1 </p>
				<p>sqrt(float_expr) 平方根 </p>
				<p>
						<br />3.日期函数 </p>
				<p>getdate() 返回日期 </p>
				<p>datename(datepart,date_expr) 返回名称如 June </p>
				<p>datepart(datepart,date_expr) 取日期一部份 </p>
				<p>datediff(datepart,date_expr1.dateexpr2) 日期差 </p>
				<p>dateadd(datepart,number,date_expr) 返回日期加上 number </p>
				<p>上述函数中datepart的 </p>
				<p>写法 取值和意义 </p>
				<p>yy 1753-9999 年份 </p>
				<p>qq 1-4 刻 </p>
				<p>mm 1-12 月 </p>
				<p>dy 1-366 日 </p>
				<p>dd 1-31 日 </p>
				<p>wk 1-54 周 </p>
				<p>dw 1-7 周几 </p>
				<p>hh 0-23 小时 </p>
				<p>mi 0-59 分钟 </p>
				<p>ss 0-59 秒 </p>
				<p>ms 0-999 毫秒 </p>
				<p>
						<br />日期转换 </p>
				<p>convert() </p>
				<p> </p>
				<p>4.系统函数 </p>
				<p>suser_name() 用户登录名 </p>
				<p>user_name() 用户在数据库中的名字 </p>
				<p>user 用户在数据库中的名字 </p>
				<p>show_role() 对当前用户起作用的规则 </p>
				<p>
						<br />db_name() 数据库名 </p>
				<p>object_name(obj_id) 数据库对象名 </p>
				<p>col_name(obj_id,col_id) 列名 </p>
				<p>col_length(objname,colname) 列长度 </p>
				<p>valid_name(char_expr) 是否是有效标识符 </p>
				<br />
				<div style="FONT-SIZE: 14px; LINE-HEIGHT: 25px">
				</div>
		</div>
<img src ="http://www.cnitblog.com/yide/aggbug/20076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2006-12-05 09:31 <a href="http://www.cnitblog.com/yide/archive/2006/12/05/20076.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sqlserver   datetime</title><link>http://www.cnitblog.com/yide/archive/2006/12/05/20074.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 05 Dec 2006 00:55:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2006/12/05/20074.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/20074.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2006/12/05/20074.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/20074.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/20074.html</trackback:ping><description><![CDATA[
		<div class="postTitle">
				<a class="postTitle2" id="viewpost1_TitleUrl" href="http://www.cnblogs.com/fubeidong/archive/2006/10/11/526247.html">sqlServer DateTime数据类型的格式转换</a>
		</div>数据库中有个字段叫orderTime，是DateTime类型的数据，如果我们用以下SQL语句把它取出来：<br />select<br />orderTime<br />from orders<br />则会把时间都显示出来，而如果改成下面的SQL语句：<br />select<br />orderTime = convert(varchar(10),orderTime,120)<br />from orders<br />则会显示YYYY-MM-DD的格式，如：2006-06-13<br />实际上还有其它的样式，如SQL这样写：<br />select<br />orderTime = convert(varchar(12),orderTime,111)<br />from orders<br />则以YYYY/MM/DD格式显示。如2006/06/13<br />还有一大堆的格式(下面的getdate()方法是SQL里面的函数，取得服务器当前时间，也是DateTime格式的) <br />select CONVERT(varchar(12) , getdate(), 112 )<br />20040912<br />select CONVERT(varchar(12) , getdate(), 102 )<br />2004.09.12<br />select CONVERT(varchar(12) , getdate(), 101 )<br />09/12/2004<br />select CONVERT(varchar(12) , getdate(), 103 )<br />12/09/2004<br />select CONVERT(varchar(12) , getdate(), 104 )<br />12.09.2004<br />select CONVERT(varchar(12) , getdate(), 105 )<br />12-09-2004<br />select CONVERT(varchar(12) , getdate(), 106 )<br />12 09 2004<br />select CONVERT(varchar(12) , getdate(), 107 )<br />09 12, 2004<br />select CONVERT(varchar(12) , getdate(), 108 )<br />11:06:08<br />select CONVERT(varchar(12) , getdate(), 109 )<br />09 12 2004 1<br />select CONVERT(varchar(12) , getdate(), 110 )<br />09-12-2004<br />select CONVERT(varchar(12) , getdate(), 113 )<br />12 09 2004 1<br />select CONVERT(varchar(12) , getdate(), 114 )<br />11:06:08.177<br /><img src ="http://www.cnitblog.com/yide/aggbug/20074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2006-12-05 08:55 <a href="http://www.cnitblog.com/yide/archive/2006/12/05/20074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bde</title><link>http://www.cnitblog.com/yide/archive/2006/11/09/19001.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 09 Nov 2006 06:10:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2006/11/09/19001.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/19001.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2006/11/09/19001.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/19001.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/19001.html</trackback:ping><description><![CDATA[
		<p class="content" style="MARGIN: 4px 2px 0px">您可以在INSTALL SHIELD 的安装程序组里将您要添加的数据库文件<br />添加进去,或新建一个组,里面放置数据文件<br />主要操作是:<br />1. BDE的安装,<br />如果您想安装的是PARADOX数据库程序,那么<br />BDE安装组件的最小配置是下列文件<br />IDPDX32.DLL<br />IDAPI32.DLL<br />BLW32.DLL<br />IDSQL32.DLL<br />IDAPIINST.DLL<br />IDBAT32.DLL<br />IDR20009.DLL<br />IDAPI32.CFG<br />BANTAM.DLL<br />USA.BTL<br />FAREAST.DLL<br />CHARSET.CVB<br />IDAPI.CNF<br />如果你需要做的是SQL SERVER之类的安装盘的话<br />根据我的实验,似乎BDE在这方面有些问题<br />如果不选全部安装BDE,应用程序即使安装了也不能运行<br />所以要选全部安装BDE才可以<br />在BDE安装时,你可以添加进去ALIAS,在BDE安装选项里有一个SETTING<br />找到ADD ALIAS后,用NEW添加一个<br />然后可以在 ALIAS的参数列表里输入一些需要提前设置的参数设置<br />下面是我做的一个安装MS SQL SERVER的参数设置的例子<br />DATABASE NAME=haitian<br />SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT<br />SERVER NAME=bm<br />USER NAME=sa<br />一般的PARADOX数据库安装,我不会用在安装程序里直接设置ALIAS的路径<br />因为程序安装路径受用户控制,所以指定安装路径后,程序在搜寻BDE 别名<br />的数据库路径时可能会出错误<br />应该是在程序运行后,由程序自己得到自己当前的路径,然后使用<br />dbiAddAlias 函数创建数据库别名<br />2. 在主选单里选择 specify components and files里<br />然后选择GROUPS,您可以用添加组 (Add Group) 添加一个安装组<br />添加组操作时可以设定这个组的安装路径,默认是<br />假设你要添加的组为DATA,你可以把改变安装路径为 install dir/data<br />比如添加的组为DATA,然后用 lanuch Explorer 启动资源管理器后<br />在资源管理器里选择你要添加的文件,拖到你要放置这些文件的组里<br />即可。<br />3.主选单里的specifys folders and icons 可以设定你安装的文件安装的<br />默认路径是那里(Advanced--&gt; Working),<br />安装后的图标是什么(Advanced --&gt;Icon)<br />还可以指定安装后程序的运行参数(General--&gt;Run Command),<br />和安装文件出现在WINDOWS 主菜单上的说明词(General--&gt;Description)<br />及安装后的运行文件的快捷键是那个(Advance--&gt;Short Cut Key)<br />个人意见：BDE除了打包文件，还要修改注册表，修改的和DELPHI安装差不多。 </p>
<img src ="http://www.cnitblog.com/yide/aggbug/19001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2006-11-09 14:10 <a href="http://www.cnitblog.com/yide/archive/2006/11/09/19001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Reporting Services 部署指南</title><link>http://www.cnitblog.com/yide/archive/2006/09/29/17485.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Fri, 29 Sep 2006 07:02:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2006/09/29/17485.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/17485.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2006/09/29/17485.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/17485.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/17485.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 作者：John H. Miller, Microsoft Corporation							