2016-08-09 10 views
0

Sorry, ich kenne nicht einmal die richtigen Worte, um diese Frage zu stellen. Bitte beachten Sie, dass ich kein offizieller technischer Support bin und auch keines der fraglichen Programme geschrieben habe. Ich bin der Typ, der versucht, Dinge zu reparieren, während ich darauf warte, dass das offizielle Tech-Support-Unternehmen alle "Have you off and and read" -Tickets durchgeht, bevor sie zu uns kommen.Verwenden Sie Daten von einer DBF als Suchzeichenfolge für eine andere

Das Hauptprogramm unseres Geschäfts speichert alle Patientendaten in einem großen Stapel von .DBFs. Ich möchte einen Wert löschen, der als IHI (Ihino) für alle Patienten ohne Geburtsdatum (pbirthdate) bezeichnet wird.

Leider ist die patient.dbf, die die meisten Patientendaten (einschließlich pbirthdate) speichert, nicht dieselbe, die den IHI-Wert speichert (Ihino in HIPatientExt.dbf). Es gibt einen gemeinsamen Wert zwischen ihnen. Die Datei patient.dbf hat einen Wert namens pnumber, der dem ihipatno-Wert in HIPatientExt.dbf entspricht (d. H. Diese Zahlen beziehen sich auf denselben Patienten).

Ich habe Zugriff auf die Eingabe von Datenbankbefehlen. Also, verwenden Sie das, gibt es eine Möglichkeit, einen Wert in einem dbf von einer Suche mit Daten von einem anderen zu löschen/ersetzen. Ich weiß, dass das wahrscheinlich schlecht formuliert ist. Um es anders auszudrücken, lassen Sie uns sagen, dass sie in der gleichen DBF waren, wäre der Befehl, den ich laufen würde

repl Ihino with "" for empty(pbirthdate)

ich dachte, dass es bedeuten kann eine Liste der beteiligten pnumbers ausgibt. Ich bin so weit gekommen, copy to zu verwenden, um eine große .txt-Datei zu machen, die die pnumbers aller Patienten enthält, die ein leeres pbirthdate haben. Aber ich habe keine Ahnung, wie ich diese massive Liste als Teil des repl-Befehls verwenden soll. Wenn das überhaupt möglich ist.

Sorry für die luftige Natur der Frage. Ich habe gerade VFP9-Befehle auf die Art und Weise aufgenommen, wie ich sie gebraucht habe, so wie ich sie gebraucht habe. Und da die meisten VFP-Tutorials wahrscheinlich auf Steintafeln geschrieben sind, hoffe ich, dass hier jemand ist, der eine Idee hat, wie ich erreichen kann, was ich versuche zu tun.

Grüße

Lobsta

+0

Ah, die Freuden des SichtFoxpro. Ihr Problem kann komplexer sein als ein herkömmliches * Such-X für das relative Y- und das update/delete * -Typ-Szenario, da Visual Foxpro das Binden von Tabellen mithilfe von DBC-Verknüpfungen ermöglicht. Die DBC-Dateien können vom ursprünglichen Entwickler geschützt werden (so dass Sie keinen direkten Zugriff haben). Siehe https://books.google.ca/books?id=wKNfTHRnkLAC&pg=PA224&lpg=PA224&dq=remove+foxpro+dbc+link&source=bl&ots=_-bTnTRp2G&sig=sX7eK8iUcwXeqvdbLQl-dKlPby0&hl=de&sa=X&redir_esc=y#v=onepage&q=remove % 20foxpro% 20dbc% 20link & f = falsch. –

+0

Fortsetzung: Dies bedeutet nicht, dass alle Hoffnung verloren ist, nur unter normalen Umständen könnte man mehrere Tabellen öffnen und Inner-select, Joins und alle möglichen lustigen Dinge tun, die Entwickler in FoxPro typischerweise ihre Clients davon abhalten, dies zu tun macht das Schreiben des Programms einfacher, um alles in einem oder mehreren DBCs zu binden, als direkten DBF-Zugriff zu verwenden. –

+0

Als jemand, der Systeme wie das schreibt, wie es klingt, mit denen Sie arbeiten, seien Sie vorsichtig damit. Sie können die Informationen der Patienten wirklich zerstören, wenn Sie Dinge ohne gründliche Kenntnis der Tabellen und ihrer Beziehungen löschen oder ändern. – LAK

Antwort

0

VFP zur Abfrage unterstützt, Aktualisieren SQL-Befehle, Hinzufügen und Löschen von Daten. Basierend auf den Tabellen- und Spaltennamen, die Sie in Frage gestellt haben, sollte so etwas funktionieren.

UPDATE ; 
    HIPatientExt ; && Table to Update 
SET ; 
    HIPatientExt.Ihino = '' ; && Column(s) to Update 
FROM ; 
    Patient, ; && List of Tables 
    HIPatientExt ; 
WHERE ; 
    HIPatientExt.ihipatno = Patient.pnumber ; && How to Relate Tables 
    AND EMPTY(Patient.pbirthdate) && Filter 
0

Stellen Sie einfach eine Beziehung und gehen:

close all 
select 2 
use Patient 
index on pnumber to temp 
select 1 
use HIPatientExt 
set relation to pnumber into patient 
repl Ihino with "" for empty(patient.pbirthdate)