- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用 Microsoft's OLE DB Provider for Visual Foxpro 9.0 将默认值为 newid("tablename")
的主键插入到 FoxPro 表中? ?
我有两个表,一个主键的默认值为 newid("tablename")
,另一个的数据类型设置为 Integer (AutoInc)
.
当我尝试在 newid
表上运行相同的 insert
命令时,我得到以下 OleDbException
:
功能不可用
当我在以 Integer (AutoInc)
作为主键的表上运行 insert
时,它起作用了。
这是我要执行的代码:
public void InsertData()
{
using(var connectionHandler = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=\"C:\\path\\to\\db.dbc\";"))
{
var insertStatement = @"INSERT INTO mytable (mycol) values (?)";
var insertCommand = new OleDbCommand(insertStatement, connectionHandler);
insertCommand.Parameters.Add("mycol", OleDbType.Char).Value="blue";
connectionHandler.Open();
insertCommand.ExecuteNonQuery();
connectionHandler.Close();
}
}
OLE 是否因为这个 newid()
默认值而无法执行 insert
?
解决我的问题的另一种情况是,如果我在 insert
子句中手动指定 id
。例如:
var insertStatement = @"INSERT INTO mytable (id, mycol) values (?, ?)";
insertCommand.Parameters.Add("id", OleDbType.Integer).Value = 199;
insertCommand.Parameters.Add("mycol", OleDbType.Char).Value = "blue";
此外,我可以在此表上运行 select * from tablename
。
选择
片段:
public DataTable GetData()
{
var myData = new DataTable();
using(var connectionHandler = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=\"C:\\path\\to\\db.dbc\";"))
{
var da = new OleDbDataAdapter();
var mySQL = "select * from mytable";
var myQuery = new OleDbCommand(mySQL, connectionHandler);
connectionHandler.Open();
da.SelectCommand = myQuery;
da.Fill(myData);
connectionHandler.Close();
}
return myData;
}
newid()
SP:
function newId
parameter thisdbf
regional keynm, newkey, cOldSelect, lDone
keynm=padr(upper(thisdbf),50)
cOldSelect=alias()
lDone=.f.
do while not lDone
select keyvalue from main!idkeys where keyname=keynm into array akey
if _tally=0
insert into main!idkeys (keyname) value (keynm)
loop
endif
newkey=akey+1
update main!idkeys set keyvalue=newkey where keyname=keynm and keyvalue=akey
if _tally=1
lDone=.t.
endif
enddo
if not empty(cOldSelect)
select &cOldSelect
else
select 0
endif
return newkey
在单独的存储过程中,我尝试了以下方法来隔离关键字 regional
:
FUNCTION GetHello
regional hello
RETURN "HELLO WORLD"
这似乎可行(例如,将列的默认值设置为 GetHello()
,然后在 OLEDB 上运行插入)。
以下导致我的存储过程因 OLEDB 上的“功能不可用”而失败:
FUNCTION GetHello
LOCAL test
test="select * from customer"
&test
RETURN "hello"
最佳答案
感谢分享 SP 代码!它显示了罪魁祸首。
虽然我的神经倾向于对该代码进行许多更正,但我只会进行足够的修改以使其在 VFP 和 C# 中都能正常工作:
function newId
parameter thisdbf
regional keynm, newkey, nOldSelect, lDone
keynm=padr(upper(thisdbf),50)
nOldSelect=select()
lDone=.f.
do while not lDone
select keyvalue from main!idkeys where keyname=keynm into array akey
if _tally=0
insert into main!idkeys (keyname) value (keynm)
loop
endif
newkey=akey+1
update main!idkeys set keyvalue=newkey where keyname=keynm and keyvalue=akey
if _tally=1
lDone=.t.
endif
enddo
Select (m.nOldSelect)
return newkey
更改的部分仅与那个 (if !empty(...)) block
有关。
关于c# - Visual FoxPro 9 C# OleDbAdapter 插入 - 功能不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51844088/
将 Visual Foxpro 6 应用程序转换为 Visual Foxpro 9 时是否存在任何问题?还是这很直接? 在此过程中有什么需要注意的地方吗? 最佳答案 是的...取决于您项目中的各种元素
我正在使用 Visual FoxPro,我需要将货币金额转换为数字。表中的2列是tranamt(numeric,12,2)和tranamt2(character) 这是我的例子: tranamt2=-
我们的 ERP 系统是一个混合系统。实际数据是SQL,但包含用户信息、配置文件、权限、安全性等的表是在Visual FoxPro 中。 我需要获得对 VFP 数据库的独占访问权限。我使用程序本身将每个
我有 2 个 dbf 表,我需要根据第二个表的值更新第一个表。我可以在 SQL Server 中完成,我需要 Visual Foxpro 的帮助。 这是我的 foxpro 命令: ==========
我正在将 VFP 9 应用程序移植到 SQL Server。 VFP 应用程序有一些表格,其中包含“常规”字段。查询字段的时候得到一个字节数组,存盘的时候可以看里面是word文档,还是Paint BM
今天有人向我寻求有关 FoxPro 问题的帮助,了解如何通过 HTTP 下载文件。 我发现了两件事:一个是付费的 ActiveX,另一个是 other one需要 libcurl。 有没有一种方法可以
我想知道当表单处于事件状态时是否可以将文本输出到 FoxPro 中的主窗口?一旦表格出来我的?命令被发送到表单,但这不是我希望它们显示的位置。 最佳答案 查看命令 激活屏幕 这应该重定向到 VFP 主
我是 FoxPro 的新手,所以请原谅这个很可能是一个非常愚蠢的问题。我正在努力思考几个由非程序员编写的 FoxPro 9 程序,并且我以前从未看过 FoxPro 代码,我发现理解它的一些特性是一件很
我有一个旧的 Visual FoxPro 9 应用程序,它将数据存储在 dbf 文件中。 以这种格式存储了公司的加密/编码名称- 3:569A>@@ACCDFFGIIJLLMOOPRRSUUVXXY[
我有一列用逗号分隔的字符串。 示例:城市、邮政编码 我想创建一个仅填充城市的列,以便逗号前的所有内容。 其他人是如何做到这一点的?我知道使用 Foxpro,您通常可以通过多种方式完成相同的任务。任何帮
我正计划试用 Re-Fox:http://www.refox.net/ 他们有一个演示版本——但是在测试它时它说在试用模式下不支持重新编译器(考虑到该工具的主要用途,这似乎很奇怪)。 这是一款 500
我有一个旧版FoxPro exe应用程序。 源代码不可用(它是外包编写的,从未交付过源代码)。 要求使用C#编写完全相同的应用程序,然后开发新功能。要求照常过时了。虽然我们可以看到应用程序在UI上执行
我想将许多大的 FoxPro dbf 文件(总共 >80G)从生产环境复制到测试机器。这些 dbf 文件是旧 FoxPro 应用程序的业务数据。此应用程序正在运行,我无法停止它。 我可以复制那些文件吗
文件 .fpt 和 .dbf(在 Visual FoxPro 8 中制作)包含我需要获取或至少需要查看的文本(人类可读)。但我不能那样做。 MS excel 不仅可以看到文本,还可以看到很多没有意义的
我对 FoxPro 完全陌生(并且对 MySQL 非常熟悉)。 我正在尝试在 FoxPro 中执行此查询: update expertcorr_memoinv.dbf set 'Memo' = (se
我对 FoxPro 完全陌生(并且对 MySQL 非常熟悉)。 我正在尝试在 FoxPro 中执行此查询: update expertcorr_memoinv.dbf set 'Memo' = (se
我需要通过互联网传输大量的 foxpro 文件,然后将数据导入到访问数据库中。在某些情况下,.fpt 文件比同名的 .dbf 文件大几倍。从我一直在阅读的内容来看,.dbf 文件似乎包含所有内容,我可
我对 FoxPro 不是很熟悉,并且在尝试修改报告时遇到了问题。 我有一个数值,我想将其转换为文本,以便获得前四个字符,但我只能获得前两个字符。 当我在命令窗口中执行以下命令时: ?左(STR(201
作为 SQL 查询的一部分,我有以下内容 iif(rapport_nc, 35, 0) AS rapport 如果第一条记录返回 0(就是这种情况),我会在每条返回 35 的记录上收到数字溢出错误。
如何在foxpro 9.0 中获取选定值(两个字段绑定(bind):name (0) 和id(1))、选定的组合框索引? 最佳答案 thisform.yourCombobox.Value “Value
我是一名优秀的程序员,十分优秀!