📄 mainu.pas
字号:
RESULT := CNT;
END;
FUNCTION UPLOAD_TABLE(TABLE_NAME, PRIMARY_FIELD, FILE_NAME:STRING):INTEGER;
VAR I, J, CNT : INTEGER;
FILENAME,
SQL_STR, STR, TMP,
PRIMARY_VALUE: STRING;
TF : TEXTFILE;
QCHECK, QINS : TQUERY;
GFORM : TFORM;
GGAUGE : TGAUGE;
BEGIN
CNT := 0;
TRY
GFORM := TFORM .Create(APPLICATION.Owner);
GFORM.Position := POSCREENCENTER;
GFORM.Caption := '进度';
GFORM.HEIGHT := 70;
GFORM.WIDTH := 200;
GGAUGE := TGAUGE.Create(APPLICATION.Owner);
GGAUGE.Parent := GFORM;
GGAUGE.ForeColor := CLRED;
GGAUGE.Left := 2;
GGAUGE.TOP := 10;
GGAUGE.Width := 185;
GGAUGE.Height := 30;
GFORM.Show;
QCHECK := TQUERY.Create(APPLICATION.Owner);
QCHECK.DatabaseName := 'MAIN';
QINS := TQUERY.Create(APPLICATION.Owner);
QINS .DatabaseName := 'MAIN';
QCHECK.SQL.Clear;
QCHECK.SQL.ADD('SELECT * FROM '+TABLE_NAME);
QCHECK.CLOSE;
QCHECK.OPEN;
IF FileExists(FILENAME) = FALSE THEN FILE_CREATE(FILE_NAME);
IF TEST_OPEN_FILE(FILE_NAME) = TRUE THEN
BEGIN
AssignFile(TF,FILE_NAME);
RESET(TF);
GGAUGE.MaxValue := 0;
GGAUGE.Progress := 0;
WHILE NOT EOF(TF) DO
BEGIN
READLN(TF,STR);
GGAUGE.MaxValue := GGAUGE.MaxValue + 1;
END;
CloseFile(TF);
AssignFile(TF,FILE_NAME);
RESET(TF);
WHILE NOT EOF(TF) DO
BEGIN
GGAUGE.AddProgress(1);
READLN(TF,STR);
IF TRIM(STR) = '' THEN CONTINUE;
PRIMARY_VALUE := TRIM(COPY(STR,1,QCHECK.Fields.Fields[0].DataSize));
if TABLECHECK_RE1(TABLE_NAME,PRIMARY_FIELD,PRIMARY_VALUE) > 0 THEN CONTINUE;
SQL_STR := '';
SQL_STR := SQL_STR+'INSERT INTO '+TABLE_NAME +#13;
SQL_STR := SQL_STR+'(' +#13;
FOR I := 0 TO QCHECK.FieldCount-1 DO
BEGIN
SQL_STR := SQL_STR+QCHECK.Fields.Fields[I].FieldName;
IF I < QCHECK.FieldCount-1 THEN SQL_STR := SQL_STR + ','+#13;
END;
SQL_STR := SQL_STR+')VALUES(' +#13;
J := 1;
FOR I := 0 TO QCHECK.FieldCount-1 DO
BEGIN
IF QCHECK.Fields.Fields[I].DataType = ftString THEN
BEGIN
SQL_STR := SQL_STR + ''''+TRIM(COPY(STR,J,QCHECK.Fields.Fields[I].DataSize))+'''';
J := J + QCHECK.Fields.Fields[I].DataSize;
END;
IF QCHECK.Fields.Fields[I].DataType = ftFloat THEN
BEGIN
TMP := TRIM(COPY(STR,J,8));
IF CHECK_FLOATINT(TMP) = TRUE THEN SQL_STR := SQL_STR + TMP
ELSE SQL_STR := SQL_STR + '0';
J := J + 8;
END;
IF QCHECK.Fields.Fields[I].DataType = ftDateTime THEN
BEGIN
TMP := TRIM(COPY(STR,J,10));
IF CHECK_EDATE(TMP,FALSE) = TRUE THEN SQL_STR := SQL_STR + _DT+TMP+_DT
ELSE SQL_STR := SQL_STR + _DT+'1989/1/1'+_DT;
J := J + 10;
END;
IF QCHECK.Fields.Fields[I].DataType = ftBoolean THEN
BEGIN
TMP := TRIM(COPY(STR,J,QCHECK.Fields.Fields[I].DataSize));
IF TMP = 'Tr' THEN SQL_STR := SQL_STR + '1';
IF TMP = 'Fa' THEN SQL_STR := SQL_STR + '0';
J := J + QCHECK.Fields.Fields[I].DataSize;
END;
IF I < QCHECK.FieldCount-1 THEN SQL_STR := SQL_STR + ','+#13;
END;
SQL_STR := SQL_STR+')' +#13;
QINS.SQL.Text := SQL_STR;
QINS.EXECSQL;
INC(CNT);
END;
CloseFile(TF);
END;
FINALLY
QCHECK.Free;
QINS.FREE;
GFORM.Free;
END;
RESULT := CNT;
END;
FUNCTION UPLOAD_TABLE2(TABLE_NAME, PRIMARY_FIELD1, PRIMARY_FIELD2, FILE_NAME:STRING):INTEGER;
VAR I, J, CNT : INTEGER;
FILENAME,
SQL_STR, STR, TMP,
PRIMARY_VALUE1, PRIMARY_VALUE2: STRING;
TF : TEXTFILE;
QCHECK, QINS : TQUERY;
GFORM : TFORM;
GGAUGE : TGAUGE;
BEGIN
CNT := 0;
TRY
GFORM := TFORM .Create(APPLICATION.Owner);
GFORM.Position := POSCREENCENTER;
GFORM.Caption := '进度';
GFORM.HEIGHT := 70;
GFORM.WIDTH := 200;
GGAUGE := TGAUGE.Create(APPLICATION.Owner);
GGAUGE.Parent := GFORM;
GGAUGE.ForeColor := CLRED;
GGAUGE.Left := 2;
GGAUGE.TOP := 10;
GGAUGE.Width := 185;
GGAUGE.Height := 30;
GFORM.Show;
QCHECK := TQUERY.Create(APPLICATION.Owner);
QCHECK.DatabaseName := 'MAIN';
QINS := TQUERY.Create(APPLICATION.Owner);
QINS .DatabaseName := 'MAIN';
QCHECK.SQL.Clear;
QCHECK.SQL.ADD('SELECT * FROM '+TABLE_NAME);
QCHECK.CLOSE;
QCHECK.OPEN;
IF FileExists(FILENAME) = FALSE THEN FILE_CREATE(FILE_NAME);
IF TEST_OPEN_FILE(FILE_NAME) = TRUE THEN
BEGIN
AssignFile(TF,FILE_NAME);
RESET(TF);
GGAUGE.MaxValue := 0;
GGAUGE.Progress := 0;
WHILE NOT EOF(TF) DO
BEGIN
READLN(TF,STR);
GGAUGE.MaxValue := GGAUGE.MaxValue + 1;
END;
CloseFile(TF);
AssignFile(TF,FILE_NAME);
RESET(TF);
WHILE NOT EOF(TF) DO
BEGIN
GGAUGE.AddProgress(1);
READLN(TF,STR);
PRIMARY_VALUE1 := TRIM(COPY(STR,1,QCHECK.Fields.Fields[0].DataSize));
PRIMARY_VALUE2 := TRIM(COPY(STR,QCHECK.Fields.Fields[0].DataSize+1,QCHECK.Fields.Fields[1].DataSize));
if TABLECHECK_RE2(TABLE_NAME,PRIMARY_FIELD1,PRIMARY_FIELD2,PRIMARY_VALUE1,PRIMARY_VALUE2) > 0 THEN
BEGIN
SQL_STR := '';
SQL_STR := SQL_STR+'UPDATE '+TABLE_NAME +#13;
SQL_STR := SQL_STR+'SET' +#13;
J := 1;
FOR I := 0 TO QCHECK.FieldCount-1 DO
BEGIN
SQL_STR := SQL_STR+QCHECK.Fields.Fields[I].FieldName+' = ';
IF QCHECK.Fields.Fields[I].DataType = ftString THEN
BEGIN
SQL_STR := SQL_STR + ''''+TRIM(COPY(STR,J,QCHECK.Fields.Fields[I].DataSize))+'''';
J := J + QCHECK.Fields.Fields[I].DataSize;
END;
IF QCHECK.Fields.Fields[I].DataType = ftFloat THEN
BEGIN
TMP := TRIM(COPY(STR,J,8));
IF CHECK_FLOATINT(TMP) = TRUE THEN SQL_STR := SQL_STR + TMP
ELSE SQL_STR := SQL_STR + '0';
J := J + 8;
END;
IF QCHECK.Fields.Fields[I].DataType = ftDateTime THEN
BEGIN
TMP := TRIM(COPY(STR,J,10));
IF CHECK_EDATE(TMP,FALSE) = TRUE THEN SQL_STR := SQL_STR + _DT+TMP+_DT
ELSE SQL_STR := SQL_STR + _DT+'1989/1/1'+_DT;
J := J + 10;
END;
IF QCHECK.Fields.Fields[I].DataType = ftBoolean THEN
BEGIN
TMP := TRIM(COPY(STR,J,QCHECK.Fields.Fields[I].DataSize));
IF TMP = 'Tr' THEN SQL_STR := SQL_STR + '1';
IF TMP = 'Fa' THEN SQL_STR := SQL_STR + '0';
J := J + QCHECK.Fields.Fields[I].DataSize;
END;
IF I < QCHECK.FieldCount-1 THEN SQL_STR := SQL_STR + ','+#13;
END;
SQL_STR := SQL_STR+#13+'WHERE '+PRIMARY_FIELD1+' = '''+PRIMARY_VALUE1+''''+#13;
SQL_STR := SQL_STR+#13+' AND '+PRIMARY_FIELD2+' = '''+PRIMARY_VALUE2+''''+#13;
QINS.SQL.Text := SQL_STR;
QINS.EXECSQL;
INC(CNT);
END ELSE BEGIN
SQL_STR := '';
SQL_STR := SQL_STR+'INSERT INTO '+TABLE_NAME +#13;
SQL_STR := SQL_STR+'(' +#13;
FOR I := 0 TO QCHECK.FieldCount-1 DO
BEGIN
SQL_STR := SQL_STR+QCHECK.Fields.Fields[I].FieldName;
IF I < QCHECK.FieldCount-1 THEN SQL_STR := SQL_STR + ','+#13;
END;
SQL_STR := SQL_STR+')VALUES(' +#13;
J := 1;
FOR I := 0 TO QCHECK.FieldCount-1 DO
BEGIN
IF QCHECK.Fields.Fields[I].DataType = ftString THEN
BEGIN
SQL_STR := SQL_STR + ''''+TRIM(COPY(STR,J,QCHECK.Fields.Fields[I].DataSize))+'''';
J := J + QCHECK.Fields.Fields[I].DataSize;
END;
IF QCHECK.Fields.Fields[I].DataType = ftFloat THEN
BEGIN
TMP := TRIM(COPY(STR,J,8));
IF CHECK_FLOATINT(TMP) = TRUE THEN SQL_STR := SQL_STR + TMP
ELSE SQL_STR := SQL_STR + '0';
J := J + 8;
END;
IF QCHECK.Fields.Fields[I].DataType = ftDateTime THEN
BEGIN
TMP := TRIM(COPY(STR,J,10));
IF CHECK_EDATE(TMP,FALSE) = TRUE THEN SQL_STR := SQL_STR + _DT+TMP+_DT
ELSE SQL_STR := SQL_STR + _DT+'1989/1/1'+_DT;
J := J + 10;
END;
IF QCHECK.Fields.Fields[I].DataType = ftBoolean THEN
BEGIN
TMP := TRIM(COPY(STR,J,QCHECK.Fields.Fields[I].DataSize));
IF TMP = 'Tr' THEN SQL_STR := SQL_STR + '1';
IF TMP = 'Fa' THEN SQL_STR := SQL_STR + '0';
J := J + QCHECK.Fields.Fields[I].DataSize;
END;
IF I < QCHECK.FieldCount-1 THEN SQL_STR := SQL_STR + ','+#13;
END;
SQL_STR := SQL_STR+')' +#13;
QINS.SQL.Text := SQL_STR;
QINS.EXECSQL;
INC(CNT);
END; // IF
END; // WHILE NOT
CloseFile(TF);
END;
FINALLY
QCHECK.Free;
QINS.FREE;
GFORM.Free;
END;
RESULT := CNT;
END;
FUNCTION DOWNLOAD_DATASET(Q:TQUERY; FILE_NAME, TCAPTION:STRING):INTEGER;
VAR I, J, CNT : INTEGER;
FILENAME , STR: STRING;
TF : TEXTFILE;
QCHECK : TQUERY;
GFORM : TFORM;
GGAUGE : TGAUGE;
BEGIN
CNT := 0;
TRY
GFORM := TFORM .Create(APPLICATION.Owner);
GFORM.Position := POSCREENCENTER;
GFORM.Caption := TCAPTION;
GFORM.HEIGHT := 70;
GFORM.WIDTH := 200;
GGAUGE := TGAUGE.Create(APPLICATION.Owner);
GGAUGE.Parent := GFORM;
GGAUGE.ForeColor := CLRED;
GGAUGE.Left := 2;
GGAUGE.TOP := 10;
GGAUGE.Width := 185;
GGAUGE.Height := 30;
GFORM.Show;
QCHECK := TQUERY.Create(APPLICATION.Owner);
QCHECK.DatabaseName := 'MAIN';
QCHECK.SQL.TEXT := Q.SQL.Text;
QCHECK.CLOSE;
QCHECK.OPEN;
IF FileExists(FILENAME) = FALSE THEN FILE_CREATE(FILE_NAME);
IF TEST_OPEN_FILE(FILE_NAME) = TRUE THEN
BEGIN
AssignFile(TF,FILE_NAME);
REWRITE(TF);
GGAUGE.MaxValue := QCHECK.RecordCount;
GGAUGE.Progress := 0;
QCHECK.FIRST;
WHILE NOT QCHECK.EOF DO
BEGIN
GGAUGE.AddProgress(1);
FOR I := 0 TO QCHECK.FieldCount-1 DO
BEGIN
IF QCHECK.Fields.Fields[I].DataType = ftString THEN
BEGIN
STR := COPY(QCHECK.Fields.Fields[I].AsString,1,QCHECK.Fields.Fields[I].DataSize);
STR := STR+ REPLICATE(' ',QCHECK.Fields.Fields[I].DataSize-LENGTH(STR));
END;
IF QCHECK.Fields.Fields[I].DataType = ftFloat THEN
BEGIN
STR := COPY(QCHECK.Fields.Fields[I].AsString,1,8);
STR := STR+ REPLICATE(' ',8-LENGTH(STR));
END;
IF QCHECK.Fields.Fields[I].DataType = ftDateTime THEN
BEGIN
STR := COPY(QCHECK.Fields.Fields[I].AsString,1,10);
STR := STR+ REPLICATE(' ',10-LENGTH(STR));
END;
IF QCHECK.Fields.Fields[I].DataType = ftBoolean THEN
BEGIN
STR := COPY(QCHECK.Fields.Fields[I].AsString,1,QCHECK.Fields.Fields[I].DataSize);
STR := STR+ REPLICATE(' ',QCHECK.Fields.Fields[I].DataSize-LENGTH(STR));
END;
WRITE(TF,STR);
END;
WRITELN(TF,'');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -