Foxpro代码到基于集合的MySQL查询的转换
正在尝试将Visual Foxpro代码转换为基于集合的MySQL查询。下面是Foxpro的代码段Foxpro代码到基于集合的MySQL查询的转换,mysql,sql,visual-foxpro,foxpro,Mysql,Sql,Visual Foxpro,Foxpro,正在尝试将Visual Foxpro代码转换为基于集合的MySQL查询。下面是Foxpro的代码段 lnFound=0 IF LnFound = 0 .and. rcResult = "ALL" AND PcOpOrIp = "OP" SELECT PFile LcTag = ORDER() SET ORDER TO TAG PtcntlNm =SEEK(LcPatientNo) SCAN WHILE PtcntlNm = LcPatientNo
lnFound=0
IF LnFound = 0 .and. rcResult = "ALL" AND PcOpOrIp = "OP"
SELECT PFile
LcTag = ORDER()
SET ORDER TO TAG PtcntlNm
=SEEK(LcPatientNo)
SCAN WHILE PtcntlNm = LcPatientNo
IF GcMResult <= "0"
GcMResult = "1-7MAT-PTC"
ENDIF
IF MONTH(cSRa.Fromdate) = MONTH(pFile.Fromdate) ;
.AND. pFile.ThruDate >= cSRa.ThruDate
** Check From/Thru Date against pFile
IF (ABS(cSRa.totalchrg) = (pFile.BDeduct+pFile.Deduct+pFile.Coinsur)) .OR. cSRa.Tchrgs = (pFile.BDeduct+pFile.Deduct+pFile.Coinsur) .or. (ABS(cSRa.totalchrg) = pFile.Total .OR. cSRa.Tchrgs = pFile.Total)
IF lnFound = 0
gcRecid = recid
gcmResult=rcResult
ENDIF
lnFound = lnFound + 1
gcUNrECID = gcunRecid + IIF(EMPTY(gCUNreCID),Recid,[,]+recid)
ENDIF
ENDIF
ENDSCAN
SELECT PFile
SET ORDER TO &LcTag
ENDIF
在这方面的任何线索都将非常感谢,因为我已经在这个过程中工作了几天,没有明显的结果。根据这个部分VFP代码(它使用的变量不清楚),根本没有代码可以转换为基于集合的代码。相应的mySQL或MS SQL或任何其他SQL系列后端代码都只是“无”。ie:这相当于:
-- Hello to mySQL or MS SQL
PS:在您尝试转换为更新代码时,内部加入csra是错误的。它不在VFP代码中联接,csra值是常量——除非字段集上存在关系——(仅指向csra中的“当前行”值)。您可能希望将它们转换为参数,就像其他内存变量一样(代码中不清楚哪些是内存变量)。根据这部分VFP代码(它使用的变量不清楚),根本没有代码可以转换为基于集合的代码。相应的mySQL或MS SQL或任何其他SQL系列后端代码都只是“无”。ie:这相当于:
-- Hello to mySQL or MS SQL
PS:在您尝试转换为更新代码时,内部加入csra是错误的。它不在VFP代码中联接,csra值是常量——除非字段集上存在关系——(仅指向csra中的“当前行”值)。您可能希望将它们变成参数,就像其他内存变量一样(代码中不清楚哪些是内存变量)。如果我正确读取了原始代码,它就是将多个记录中的数据连接到一个字符串中,对吗?我知道如何在SQLServer中实现这一点,但不知道如何在MySQL中实现这一点。希望我的评论能帮助那些知道如何在MySQL中使用的人。你把看起来像是VFP变量上下文的东西作为实际的列名。真正好的做法是提供表结构(如果需要缩写,可以使用适用的列)和一些示例数据(即使您必须更改内部私有值。如果提供数据,请在样本列数据之间使用空格,以确保可读性。只需使用新的详细信息编辑现有问题即可。Thanks@TamarE.Granor谢谢你的回复。实际上我并不是在连接字符串,值bdeduct、decrete和coinsur是整数,我是just在上面的mysql查询中将它们的值添加为(p.bdeduct+p.deletry+p.coinsur)。@DRapp我已经创建了一个与Foxpro的dbf文件相对应的mysql表,mysql查询正在从该表中获取记录。@Vizkrig,我知道您在mysql中创建了一个相应的表,但是通过查看表内容(和列名),以及您期望从这些示例数据中得到的结果将有助于我们完成您试图完成的任何汇总聚合。如果我正确地阅读了原始代码,它将来自多个记录的数据连接到一个字符串中,对吗?我知道如何在SQL Server中做到这一点,但在MySQL中却不知道。希望我的评论能对您有所帮助知道如何在MySQL中使用的ne。您正在将看起来是VFP变量上下文的内容作为实际列名提取。真正好的做法是提供表结构(如果需要缩写,则使用适用列)和一些示例数据(即使您必须更改内部私有值。如果提供数据,请在样本列数据之间使用空格,以确保可读性。只需使用新的详细信息编辑现有问题即可。Thanks@TamarE.Granor谢谢你的回复。实际上我并不是在连接字符串,值bdeduct、decrete和coinsur是整数,我是just在上面的mysql查询中将它们的值添加为(p.bdeduct+p.deletry+p.coinsur)。@DRapp我已经创建了一个与Foxpro的dbf文件相对应的mysql表,mysql查询正在从该表中获取记录。@Vizkrig,我知道您在mysql中创建了一个相应的表,但是通过查看表内容(和列名),并且您期望从这些样本数据得到的结果将有助于我们完成您试图完成的汇总。