AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Locate

Ein Thema von BBoy · begonnen am 25. Jan 2012 · letzter Beitrag vom 26. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2      
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Probleme mit Locate

  Alt 25. Jan 2012, 11:53
Datenbank: BDE • Version: 5 • Zugriff über: TurboDB
Ich möchte Daten in die DB importieren. Dazu schreibe ich zuerst:
datamodule1.TourTable1.DisableControls Damit beim importieren das DBgrid nicht mit läuft.

Nun habe ich aber festgestellt das dann der Locate befehl nicht funktioniert.
if datamodule1.TourTable1.Locate('code',Name,[loCaseInsensitive]) = false then begin Den brauche ich aber dringend da beim Importieren geprüft werden soll ob der Datensatz bereits vorhanden ist.

Kann mir bitte jemand sagen wie ich das nun machen soll?
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Probleme mit Locate

  Alt 25. Jan 2012, 11:55
Du solltest deinen Import umbauen das er nicht über ein "dumme" Table-Klasse arbeitest.

Stell auf Insert-Statement (INSERT INTO ...) mit Parameter um
Zum check ob Einträge vorhanden sind suche sie mit SELECT-Statements mit Parameter.

Dein Import sollte dann auch viel schneller sein
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Probleme mit Locate

  Alt 25. Jan 2012, 12:08
Ist "Name" ein Variablenname?
Das ist bedenklich, da auch das DataModule das Propertie Name hat.

Ich habe es nicht getestet, aber ich würde nicht darauf vertrauen, dass er nicht nach 'Datamodule1' sucht.

Frank
Frank Reim
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Probleme mit Locate

  Alt 25. Jan 2012, 12:20
Zitat:
Du solltest deinen Import umbauen das er nicht über ein "dumme" Table-Klasse arbeitest.
Wenn BDE stimmt, dann ist das eh egal.

Besser gelich auf eine richtiges DBMS umstellen, welches MERGE ö.ä. bietet.
Markus Kinzler
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: Probleme mit Locate

  Alt 25. Jan 2012, 12:35
BDE = Borland Database Engine, ja ich weiß... ist alt.

Importieren möchte ich nicht aus einer anderen DB sondern aus einer XML Datei. Muss also jedes Datenfeld einzeln auslesen und dann alles in den Record schreiben. TurboDB unterstützt mit TSQLQuery auch sql. Aber das wäre ein riesen Aufwand das umzustellen und mit sql kenne ich mich noch weniger aus. Daher wäre mir eine Lösung mit TTable oder so erst mal lieber. Sind ja keine großen Mengen die da importiert werden, von daher kommt es auf ein oder zwei Sekunden nicht an
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#6

AW: Probleme mit Locate

  Alt 25. Jan 2012, 12:52
nur mal so am Rande:
TurboDB hat nichts mit der alten BDE zu tun...

und dein importvorgang könnte ungefähr so aussehen:

Delphi-Quellcode:
qryInsert.SQL.Text := 'insert into Tourdaten (id, feld1, feld2) values (:id, :feld1, :feld2)';
qryInsert.Prepare;

qryCheck.SQL.text := 'select count(*) ANZ from Tourdaten where code = :code';
qryCheck.Prepare;

while import do
begin
  qryCheck.ParamByName('code').AsString := name;
  qryCheck.Open;
  if qryCheck.Fields[0].AsInteger = 0 then
  begin
    qryInsert.ParamByName('ID').AsInteger := id_aus_import;
    qryInsert.ParamByName('FELD1').AsString := feld1_aus_import;
    qryInsert.ParamByName('FELD2').AsString := feld2_aus_import;
    qryInsert.ExecSQL;
  end;
  qryCheck.Close;
end;
das dürfte auf jeden fall schneller sein, als mit einer Table...
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: Probleme mit Locate

  Alt 25. Jan 2012, 12:55
cool, das sieht ja einfacher aus als ich dachte. werde das später gleich mal testen.
Danke!

Dachte TurboDB basiert auf der BDE, ist halt nur erweitert.
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#8

AW: Probleme mit Locate

  Alt 25. Jan 2012, 13:45
Dachte TurboDB basiert auf der BDE, ist halt nur erweitert.

Wenn wir von TurboDB von dataweb reden, dann nicht. Das ist afaik komplett in Delphi geschrieben.
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#9

AW: Probleme mit Locate

  Alt 25. Jan 2012, 15:18
Ein paar Fragen zu dem Code.

qryInsert.SQL.Text := 'insert into Tourdaten (id, feld1, feld2) values (:id, :feld1, :feld2)'; feld1 feld2 usw. Nehme ich da die Namen der Datensatzfelder der Tabelle? Und ist es ok wenn ich bei den values die selben namen nehme?
Also so: qryInsert.SQL.Text := 'insert into Tourdaten (Kunde_id, Kunde_name, Kunde_vorname) values (:kunde_id, :Kunde_name, :Kunde_vorname)'; Und später bei:     qryInsert.ParamByName('FELD1').AsString := feld1_aus_import; Für FELD1 setze ich hier wieder den Namen des Datenfeldes für die Tabelle?

Bei mir kommt an dieser Stelle immer das er den parameter "kunde_id" nicht findet.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Probleme mit Locate

  Alt 25. Jan 2012, 15:31
:<Name> steht für Platzhaltername. Du kannst da auch die realen Feldnamen nehmen solange die liste der Platzhalternamen eindeutig bleibt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
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