Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Paradox 7 und TCursor (https://www.delphipraxis.net/5552-paradox-7-und-tcursor.html)

Kuddel 11. Jun 2003 03:05


Paradox 7 und TCursor
 
Hallo Leute

Noch bin ich neu aber ich denke mal das ich auch schlauer werden kann.

Nun ich habe da ein Problem welches mich schon mindestens seit einem Jahr ärgert und quält. Ich habe Zwei Paradox Tabellen welche ich mittels Tcursor ansteuern will, aber ich bekomme das nicht hin das mein Tcursor auf den richtigen Datensatz springt. z.B. soll der Tcursor auf dem Datensatz springen welcher zwei Criterien erfüllt egal an welcher Position sich der Datensatz befindet.


tcVar.open("lager.db")
tcVar.locate("Lag.Nr", Lag_Nr.Value)("Auftr.Nr", Auftr_Nr.Value)

Ich bekomme es einfach nicht hin da der Tcursor immer nur nach der Lagernummer nicht aber nach Lagernummer und Auftragsnummer sucht.
Hat er die Lagernummer gefunden Plaziert er sich richtig, ansonsten nimmt er immer den ersten Datensatz in der Tabelle.

Was mache ich falsch ?

Kann mir jemand helfen wie ich diese oder eine andere locate Anweisung schreiben muß damit der Tcursor sich erst dann plaziert wenn beide Criterien erfüllt sind.

währe über eine hielfe sehr Dankbar da ich mit diesem Problem schon sehr lange am kämpfen bin. :(

MrSpock 11. Jun 2003 06:37

Hallo Kuddel,

zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum.

Zu deinem Problem:
sehe ich das richtig, dass du mit ObjectPAL arbeitest und die Ansteuerung direkt in Paradox machen willst? Oder möchtest du gerne das Delphi-Gegenstück zu den ObjectPAL Anweisung?

Kuddel 11. Jun 2003 06:57

Hallo MrSpock

eigentlich ist es mir egal mit welchem teil ich es Hinbekomme.

Ich bin wie gesagt neu auf diesem Sektor und bin natürlich mit ObjectPal und direkt mit Paradox am Arbeiten.

Da ich für Delphi 6 welches ich besitze keinerlei Handbücher oder Vorlagen habe war ich weiter mit Paradox am Arbeiten.

Also wenns geht bitte mit Paradox und ObjectPal helfen.

MrSpock 11. Jun 2003 08:16

Hallo Kuddel,

bei Delphi 6 benötigst du mindestens die Professional Version, weil erst die Datenbankunterstützung bietet.

Dann nimmst du eine TTable Komponente, die mit der Tabelle Lager.db verbunden wird. Sind Lag_Nr und Auft_Nr der zusammengestzte Primärschlüssel, so positionierst du den aktuellen Datensatz mit:

Delphi-Quellcode:
  if tblLager.FindKey([lagNr, auftNr]) then
     { Datensatz existiert und ist ausgewählt }
  else
     { Datensatz existiert nicht };
oder, falls es kein Schlüsselfeld ist:

Delphi-Quellcode:
  if tblLager.Locate('Lag_Nr;Auftr_Nr', VarArrayOf([lagNr, auftrNr]), []) then
  { Datensatz existiert und ist ausgewählt }
   else
     { Datensatz existiert nicht. };

Kuddel 11. Jun 2003 22:12

Vielen Dank für diese Hilfe , aber leider ist es ein code den ich nicht nutzen kann , da ich nur eine Delphi version habe die ich von Borland runterladen konnte.

Da ich meine gesammte Datenbank in Paradox erstellt habe und mittels Formulare auf die einzelnen Tabelle zugreife bräuchte ich hilfe wie ich dem TCursor erklären kann das er nach Auftrags und Lagernummer suchen soll bevor er sich auf einen Datensatz bewegt, da ich mehrere gleiche Lagernummern habe jedoch verschiedene Auftragsnummern.

Bislang kann ich immer nur nach einem wert suchen das führt aber dazu das ich Material von einem falschem Auftrag buche da sich der Tcursor immer auf dem ersten Datensatz bewegt welcher die Auftrags oder Lagernummer hat nicht aber Auftrags- und Lagernummer.

MrSpock 12. Jun 2003 22:06

Hallo Kuddel,

also gut, dann machen wir das mal in ObjectPal :mrgreen: :

Dein Code enthält hier einen Fehler in der Notation, es muss heißen:

Delphi-Quellcode:
tcVar.open("lager.db")
tcVar.locate("Lag.Nr", Lag_Nr.Value, "Auftr.Nr", Auftr_Nr.Value)
unter der Annahme, dass deine Felder in der Tabelle tatsächlich Lag.Nr und Auftr.Nr heißen. Enthalten die Feldnamen wirklich einen Punkt?

Was für einen Typ haben Lag_Nr und Auftr_Nr?

Kuddel 12. Jun 2003 22:44

Hallo MrSpock

Auftr.Nr und Lag.Nr sind beides Typen der Kategorie Number und auch die Feldnamen enthalten wirklich den Punkt.

Das war das erste was ich versucht habe um nach diesen beiden Nummern zu suchen , jedoch habe ich es wie gesagt nicht geschaft beide Nummern zu suchen.

Wie vorher gesagt kann ich über ein Formular Rücklieferung Material dem Lager gut schreiben da ich nur die Lag.Nr brauche. Da es sich aber um unsere eigenen Baustellen handelt wo das Material hingeht wollte ich das Material auch aus der Ausgangs DB. rausschreiben. Folglich habe ich eine Auftragsnummer eingebunden welche mir ermöglichen soll auf die einzelnen Auslieferungen zurück zu greifen.

sprich Ich versuche so für mich als Disponent eine möglichkeit zu erstellen um mit dem Programm welches mir in der Firma wie Privat zu verfügung steht den Ablauf zu erleichtern un besser nach halten zu können welches Material wo rausgegangen ist und welches wann von welcher Baustelle zurück gekommen ist. Folglich kann ich auch nachvollziehen welches Material noch auf welcher Baustelle befinden muß.

MrSpock 13. Jun 2003 07:06

Hallo Kuddel,

wenn du sagst, der Code, den ich oben gepostet habe, funktioniert nicht, werde ich mir das am Wochenende noch einmal genauer anschauen.

Kuddel 13. Jun 2003 10:13

Hallo MrSpock

Ich glaube ich habe versucht das Pferd von hinten aufzu zäumen , also hier in kürze was ich eigentlich will.

Ich habe mehrere Tabellen darunter Lager , Ausgang und Rücklieferung

also was ich im Ausgang schreibe wird aus dem Lager abgezogen soweit richtig schlüssel ist hier die Lager nummer.

Was ich in der Rücklieferung schreibe sollte aus dem Ausgang abgezogen werden (" solte über Auftragsnummer und Lagernummer ") gefunden werden und gleichzeitig dem Lager über der Lagernummer wieder gut geschrieben werden also als "Eingang" funktioniert nicht.

MrSpock 14. Jun 2003 20:43

Hallo Kuddel,

ich hab das jetzt noch einmal ausprobiert. Dazu habe ich eine Tabelle "lager.db" erstellt, die beide Felder, nach denen du suchen willst enthält, plus ein paar Zusatzfelder.

Dann habe ich ein Formular erstellt, mit 2 Editfeldern (für die Suchwerte) und einem Schalter "Suchen". Der pushButton Methode habe ich folgenden Code zugewiesen:

Delphi-Quellcode:
method pushButton(var eventInfo Event)
 var
  tc Tcursor
  tv TableView
endvar
  tv.open("lager.db")
  tc.attach(tv)
  if tc.locate("Lag.Nr", SuchLager.Value, "Anzahl", SuchAuftrag.Value) then
    tv.moveToRecord(tc)
  else
    msgInfo("Fehler", "Nicht gefunden")
  endif
endMethod
Tja, was soll ich sagen!? Funktioniert einwandfrei, auch mit anderen Feldern im Locate.

Welchen Typ haben deine Felder? (sind die beiden Suchfelder Integer Felder?)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz