Проверьте 2 одинаковых данных в другой таблице в VFP, чтобы я мог поместить их в оператор IF - PullRequest
0 голосов
/ 02 сентября 2018

Если у table_A.firstname были те же точные данные в table_B.firstname, то появится окно сообщения. Я хотел бы знать, что код для этого?

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

Это так же просто, как:

if trim(table_A.firstname) == trim(table_B.firstname)
0 голосов
/ 03 сентября 2018

Поскольку вы указали одни и те же данные в двух таблицах, вам нужно сравнить каждое поле из одной исходной записи с целевым значением всех всех записей с их соответствующими полями в нем.
(Предполагая, что структура данных обеих таблиц идентична во всех аспектах)

CLOSE ALL  
CLEAR ALL  
RELEASE ALL  

SET TALK OFF  

SELECT 1
USE file1
GO TOP

SELECT 2
USE file2

DO WHILE NOT EOF()

    SELECT 1

    unq_found = 0

    SELECT 2
    GO TOP

    DO WHILE NOT EOF()

        SELECT 2

        for ix = 1 to AFIELDS(TEST)

            SRC_FLD = "A." + ALLTRIM(FIELD(IX))
            TRG_FLD = "B." + ALLTRIM(FIELD(IX))

            IF ALLTRIM(&SRC_FLD) <> ALLTRIM(&TRG_FLD)
                unq_found = 1
                EXIT for
            ENDIF

        ENDFOR

        IF unq_found = 0

            @00,00 CLEAR
            @10,10 SAY "SAME DATA:- " 
            @12,10 SAY "RECORD NUMBER:-" + STR ( RECNO() ) 
            @18,10 SAY "PRESS A KEY TO CONTINUE"
            READ

        ENDIF

        SKIP

    ENDDO


    SELECT 1
    skip

ENDDO
0 голосов
/ 02 сентября 2018

Это найдет все дубликаты в table_B.firstname

close all
set talk off

use table_a in 0
use table_b in 0

sele table_a
scat memv

do while !eof()
    sele table_b
    scan for firstname=m.firstname
        wait wind allt(m.firstname)+" RecNo="+allt(str(recno()))
    endscan
    sele table_a
    if !eof()
        skip
        scat memv
    endif
enddo
close all

Если вы хотите использовать If .. Else ... (просто измените в цикле Do while)

do while !eof()
    sele table_b
    go top
    locate for firstname=m.firstname
    if found()
        wait wind allt(m.firstname)+" RecNo="+allt(str(recno()))
    endif
    sele table_a
    if !eof()
        skip
        scat memv
    endif
enddo
...