LPARAMETERS tccustid, tcshipid, tcpn LOCAL lcConid, lnSelect, lcKey1, lcKey2, lnStart, lcExact, lcError, lcString lcError = ON("ERROR") ON ERROR lcExact = SET("EXACT") SET EXACT OFF lnSelect = SELECT() lcConid = SPACE(0) lnStart = SECONDS() IF TYPE("GLDEV") = "L" AND GLDEV SET STEP ON ENDIF USE edisd SHARED AGAIN IN 0 ALIAS q_edisd USE edish SHARED AGAIN IN 0 ALIAS q_edish lcKey1 = PADR(ALLTRIM(tccustid),FSIZE("SH_CCODE","Q_EDISH")); +PADR(ALLTRIM(tcshipid),FSIZE("SH_CSHIPID","Q_EDISH")); +PADR(ALLTRIM(tcpn),FSIZE("SH_CPN","Q_EDISH")) lcKey2 = PADR(ALLTRIM(tccustid),FSIZE("SD_CCODE","Q_EDISD")); +PADR(ALLTRIM(tcshipid),FSIZE("SD_CSHIPID","Q_EDISD")); +PADR(ALLTRIM(tcpn),FSIZE("SD_CPN","Q_EDISD")) lcStatusfile = "c:\status.txt" IF !FILE(lcStatusfile) LIST STATUS TO FILE &lcStatusfile ENDIF SELECT MAX(sH_dissue), sH_cPON FROM q_edish; WHERE sh_ccode + sh_cshipid + sh_cpn + DTOS(sH_dissue) = lcKey1; INTO CURSOR q_conid lcString = lcKey1 + ":" + lcKey2 + ":" IF _TALLY = 0 OR EMPTY(sH_cPON) lcKey2 = PADR(ALLTRIM(tccustid),FSIZE("SD_CCODE","Q_EDISD")); +PADR(ALLTRIM(tcshipid),FSIZE("SD_CSHIPID","Q_EDISD")); +PADR(ALLTRIM(tcpn),FSIZE("SD_CPN","Q_EDISD")) SELECT MAX(sd_dissue), sd_cran FROM q_edisd; WHERE sd_ccode + sd_cshipid + sd_cpn + DTOS(sd_dissue) = lcKey2; INTO CURSOR q_conid IF _TALLY > 0 lcConid = q_conid.sd_cran lcString = lcString + "by Key2" + ":" ENDIF ELSE lcString = lcString + "by Key1" + ":" lcConid = q_conid.sH_cPON ENDIF lcString = lcString + lcConid + ":" + ALLTRIM(DBF("q_edish")) + ":" + ALLTRIM(DBF("q_edisd")) + CHR(13) USE IN q_conid USE IN q_edisd USE IN q_edish =STRTOFILE(lcString,"C:\f_getconid2.txt",.T.) SET EXACT &lcExact ON ERROR &lcError SELECT(lnSelect) RETURN lcConidAny thoughts or suggestions most gratefully accepted.