求vfp高手帮忙

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求vfp高手帮忙相关的知识,希望对你有一定的参考价值。

vfp中的scatter与gather命令怎么用啊,帮我解决一下啦.最好说得简单一点吧.举一些例子.

参考技术A SCATTER 命令请参阅
ALINES() | APPEND FROM ARRAY | COPY TO ARRAY | DECLARE | DIMENSION | GATHER
[该主题是 beta 版的一部分并将在今后的版本中修改. 空的主题包含了一个占位符.]

从当前记录中把数据复制到一组内存变量或数组中。

SCATTER [FIELDS FieldNameList | FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton] [MEMO]
TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK
| NAME ObjectName [BLANK]
参数
FIELDS FieldNameList
指定字段,命令将其内容传送到内存变量或数组中。如果省略 FIELDS FieldNameList,则传送所有字段。如果在字段列表后放一个关键字 MEMO ,则字段列表中可以包含备注字段。SCATTER 总是忽略通用和图片字段,即使包括了 MEMO 关键字也是如此。
FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton
通过 LIKE 和 EXCEPT 子句,有选择地把字段中的内容传送到内存变量或数组中。如果包括 LIKE 子句,那么与 Skeleton 相匹配的字段被传送到内存变量或数组中。如果包括 EXCEPT Skeleton,那么除了与 Skeleton 相匹配的字段外,其他所有字段都传送到内存变量或数组中。
Skeleton 支持通配符。例如,如果要把所有以 A 和 P 字母开头的字段传送到内存变量或数组中去,可以使用如下命令:

SCATTER FIELDS LIKE A*,P* TO myarray
可以同时使用 LIKE 和 EXCEPT 子句,如:

SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray
MEMO
指定字段列表中包含了备注字段。默认情况下,SCATTER 不处理备注字段。
将很大的备注字段传送到内存变量或数组时,必须有足够的内存。如果缺乏足够的内存,Visual FoxPro 将产生相应的错误信息。如果某一备注字段太大,内存中装不下,那么该字段及字段列表中的其他备注字段的内容都不会传送。如果没有传送备注字段,那么对应的内存变量或数组元素设置为“假”(.F.)。

TO ArrayName
指定接受记录内容的数组。从第一个字段起,SCATTER 按顺序将每个字段的内容复制到数组的每个元素中。
如果指定数组的元素比字段数多,则多余数组元素的内容不发生变化。如果指定数组不存在,或者它的元素个数比字段数少,则系统自动创建一个新数组,数组元素与对应字段具有相同的大小和数据类型。

TO ArrayName BLANK
创建一个数组,它的元素与表中字段具有相同大小和数据类型,但没有内容。
MEMVAR
把数据传送到一组内存变量而不是数组中。SCATTER 为表中每个字段创建一个内存变量,并把当前记录中各个字段的内容复制到对应的内存变量中。新创建的内存变量与对应字段具有相同的名称、大小和数据类型。
如果 scatter 命令中包括字段列表,则为字段列表中每个字段都创建一个内存变量。

要引用与当前表中字段有相同名称的内存变量,应在内存变量名前加上限定符 M.。

警告 不要在使用 MEMVAR 时加入 TO。如果加入了 TO, Visual FoxPro 创建一个名为 MEMVAR 的数组。
MEMVAR BLANK
创建一组空内存变量,每个内存变量与相应的字段有相同的名称、数据类型以及相同的大小。如果 SCATTER 中包含一字段列表,则为字段列表中的每一个字段创建一个内存变量。
NAME ObjectName [BLANK] [ADDITIVE]
创建一个具有与表中字段名相同的属性的对象。
若要复制表中各字段的值到各对象属性, 不要包括 BLANK 关键字。要保持属性为空, 包括 BLANK 关键字。关于相应的字段类型的空的属性包含了什么内容, 参见 EMPTY( ) 函数。对于表中的通用字段不创建属性。

要用当前记录内容更新 ObjectName 中指定的存在的和有效的 Visual FoxPro 对象而不是 COM 对象的属性值, 包括 ADDITIVE 关键字。如果对象不存在, Visual FoxPro 自动创建一个对象。不能在没有 NAME 子句时使用 ADDITIVE 关键字。这样做会产生错误。

使用带 ADDITIVE 的 BLANK 忽略具有相同字段名的已存在的属性值。

备注
如果对象不存在具有相同字段名的属性, SCATTER...NAME ADDITIVE 自动创建它们。但是, 由于有些属性是标记为隐藏的和受保护的所以 SCATTER 不会创建所有必须的属性。如果 Visual FoxPro 不能创建或设置一个属性, 它产生一个错误。例如, 你可以有一个字段名匹配一个本地的 Visual FoxPro 对象属性名并且字段和属性的数据类型是相同的。但是, 如果字段名匹配一个方法, 事件或对象名, Visual FoxPro 将产生一个错误。

你可以用 SCATTER...NAME 创建的对象而不是源自一个 Visual FoxPro 类来防止问题。与只带 NAME 的 SCATTER 不同, Visual FoxPro 不复盖已存在的对象来创建新对象。

当不能为表中的字段设置一个只读属性时 SCATTER...NAME ADDITIVE 不产生错误。但是, 属性值会保持不变。

要引用与打开的表同名的对象属性,应在对象名前加上限定符 M.。下例显示 Customer 表中的 Company 字段值和 Customer 对象的 Company 属性值:

USE Customer
SCATTER NAME Customer
? Customer.Company && 返回表中的值
? m.Customer.Company && 返回对象属性值
示例
示例 1

此示例使用了 scatter 语句创建了一系列基于 test 表中字段的变量。然后为每个字段赋值并向表添加了一个空记录。使用 gather 命令将数据复制到表中。

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER MEMVAR BLANK
m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE
示例 2

此示例使用 scatter 命令及其后跟着的 name 子句创建了一个具有基于表中字段属性的对象。然后为对象的属性赋值并向表添加一个空记录。使用 gather 命令及name 子句将数据复制到表的新记录中。

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK
oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE
示例 3

假定你有两个或两个以上的表或游标并想创建一个包含这些游标中的数据的对象。以下示例选择 Customer 表并用 SCATTER...NAME 来从 Customer 表中的字段创建 oCustomer 对象和它的属性。SCATTER...NAME...ADDITIVE 然后在 oCustomer 对象中更新 CreditHistory 表中的 ReportDate 和 Rating 字段值和 MySessionTable 表中的 CookieText 和 SessionId 字段值, 或在这些属性不存在时创建这些属性。

SELECT Customer
SCATTER NAME oCustomer
SELECT CreditHistory
SCATTER FIELDS ReportDate, Rating NAME oCustomer ADDITIVE
SELECT MySessionTable
SCATTER FIELDS CookieText, SessionId NAME oCustomer ADDITIVE

--------------------------------------------------------------------

GATHER 命令请参阅
APPEND FROM ARRAY | COPY TO ARRAY | DIMENSION | SCATTER
[该主题是 beta 版的一部分并将在今后的版本中修改. 空的主题包含了一个占位符.]

将当前选定表中当前记录的数据替换为某个数组、内存变量组或对象中的数据。

GATHER FROM ArrayName | MEMVAR | NAME ObjectName
[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]
[MEMO]
参数
FROM ArrayName
指定一个数组,用它的数据替换当前记录中的数据。从数组的第一个元素起,各元素的内容依次替换记录中相应字段的内容。第一个数组元素的内容替换记录第一个字段的内容,第二个数组元素的内容替换记录第二个字段的内容,依此类推。
如果数组的元素少于表的字段数目,则忽略多余的字段。如果数组的元素多于表的字段数目,则忽略多余的数组元素。

MEMVAR
指定一组内存变量或数组,把其中的数据复制到当前记录中。内存变量的数据将传送给与此内存变量同名的字段。如果没有与某个字段同名的内存变量,则不替换此字段。
提示 在 SCATTER 命令中包含 MEMVAR 或 BLANK 子句,可以创建与字段同名的内存变量。
NAME ObjectName
指定某个对象,其属性与表的字段同名。每个字段的内容分别替换为与字段同名的属性的值。如果没有与某个字段同名的属性,则此字段的内容不做替换。
FIELDS FieldList
指定用数组元素或内存变量的内容替换字段的内容。只替换在 FieldList 中指定的字段的内容。
FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton
选用 LIKE 子句或 EXCEPT 子句,或者同时包含以上两个子句,可以有选择地将字段内容替换为数组元素或内存变量的内容。如果包含 LIKE Skeleton 子句,Visual FoxPro 将替换与 Skeleton 匹配的字段;如果包含 EXCEPT Skeleton 子句,Visual FoxPro 将替换与 Skeleton 不匹配的所有字段。
Skeleton 支持通配符(* 和 ?)。例如,要替换所有以字母 A 和 P 开头的字段,可使用下列命令:

GATHER FROM gamyarray FIELDS LIKE A*,P*
MEMO
指定用数组元素或内存变量的内容替换备注字段的内容。如果省略 MEMO 子句,则在用数组或内存变量的内容替换字段内容时, gather 命令将跳过备注字段。即使包含了 MEMO 关键字,gather 命令也忽略通用字段和图片字段。
示例
此示例使用 gather 命令将数据复制到表的新记录中。在创建 test 之后,使用scatter 命令创建一套基于表中字段的变量。然后对每个字段赋值并向表中添加一个空记录。

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER MEMVAR BLANK
m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE
此示例使用了 gather 命令及 name 子句将数据复制到表的新记录。在创建表 test之后,使用 scatter 命令创建具有基于表中字段属性的对象。然后为对象的属性赋值并向表添加一个空记录。

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK
oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE

参考资料:http://hi.baidu.com/443124089

本回答被提问者采纳
参考技术B 也不知道具体要求,不过根据你说的应该比较简单.有兴趣可以联系我和我探讨一下.
QQ:309497000

求C语言高手帮忙。

下面程序的功能是:将字符串s中下标为偶数的字符删掉,将剩余的字符形成的新的字符串放到数组t中。例如:当字符串s为“ABCDEFGHIJK”时,则在数组t中的字符串应为:“BDFHJ”。
在函数fun的定义部分有两处错误,将它们找出并改正后,上机调试运行程序。
注意:在改正错误时不得增行或删行,也不得更改程序结构!

#include<stdio.h>
void fun(char s[],char t[])
int i,j,n;
n=strlen(s);
for(i=0,j=0;i<n;i++)
if(i%2==0)
t[j++]=s[i++];
t[j]=’\0’;
main( )
char s[80],t[80];
printf(“please input string:”);scanf(“%s”,s);
fun(s,t);
printf(“\nthe new string is :%s\n”,t);

是下表为偶数,还是地偶数个,你给例子是第偶数个!?

t[j++] = s[i++]; 改为 t[j++] = s[i];

如果是底偶数个的话 改为i%2==1

main 至少加个void的吧!追问

main( void )
??这样?

参考技术A if(i%2==0)
t[j++]=s[i++];
改成
if(i%2!=0)
t[j++]=s[i];

以上是关于求vfp高手帮忙的主要内容,如果未能解决你的问题,请参考以下文章

ibatis的错误,求高手帮忙看看啊,郁闷一个周末啊,伤不起啊,求高手啊~~~~

求matlab高手帮忙,高分

求PHP高手帮忙!!

请高手进来帮忙,关于SQL和网络通信链接失败的问题,追加50分。

求高手帮帮忙! 怎么使用Ueditor上传图片? 我用的是php,请高手给个demo, 谢谢!

求高手帮忙看一个Matlab 程序