Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ibtable.Locate xy > 10 (https://www.delphipraxis.net/157428-ibtable-locate-xy-10-a.html)

JHDGE 11. Jan 2011 15:53

Datenbank: Firebird • Version: 2,0 • Zugriff über: ibexpress

ibtable.Locate xy > 10
 
Hallo
ich kenne bislang nur das ibtable.Locate bei Interbase / Firebird in der Form das ich schreibe

Delphi-Quellcode:
sqldbform.IBTable_userdat.Locate('USNUM',usernum,[locaseInsensitive,loPartialKey]) then

Also Quasi ist im Feld USNUM die usernum drinnen dann gefunden

Ich möchte jetzt aber z.B. usnum > 20 oder usnum <> 20 schreiben

Geht das auch ?

Könnte ich in der Filter Eigenschaft diese habe ich nicht nicht benutzt das auch in einem Select machen

also where usnum <> 20

Aber wie gehe ich dann durch die Table
sqldbform.IBTable_userdat.locatenext oder .next geht dann ja nicht oder

Ich habe schon alles durchgesucht finde aber nix gescheites google kennt mich nun schon mit Namen :-)

Wer könnte mir da etwas helfen ...

Danke schon mal

Joachim

hoika 11. Jan 2011 15:59

AW: ibtable.Locate xy > 10
 
Hallo,

verabschiede dich einfach von IBTable und nimm eine IB_Query.


Heiko

JHDGE 11. Jan 2011 17:03

AW: ibtable.Locate xy > 10
 
Hallo Heiko
das dachte ich mir schon das das kommt aber da habe ich doch gleich mal auch keine Ahnung von
und gefunden habe ich dann auch gleich 3 mal nix gutes habe 1000 Bücher und alles aber ich kann am meisten mit einem Beispiel anfangen

Ich habe das meiste ja auch auf Query

Könnte wahrscheinlich auch einfach umsteigen mag aber keine DBGRID verwenden und hängt das nicht zusammen ? Ich nehme Query momentan nur zum schreiben von neuen Datensätzen aber nicht zum suchen von Datensätzen dazu habe ich nichts nichts gefunden
Komme von Datenbank her aus der Dbase Codebase Abteilung

hoika 11. Jan 2011 19:49

AW: ibtable.Locate xy > 10
 
Hallo,

Zitat:

mag aber keine DBGRID verwenden
Umso besser.

Nimm ein einfaches TStringGrid, wenn du ein Grid brauchst.
Eine SQL-DB wird durch TTable nur vergew...


Heiko

joehd 11. Jan 2011 20:32

AW: ibtable.Locate xy > 10
 
hallo das mitz dem stringgrid mache ich ja wenn ich ttable benutze

aber wie such ich im ibquerry ok den sql string
select * from table where Num > 10
:glaskugel:
aber wi mach ich den next und so bitte habt Ihr du ein Beispiel ein kleines dann verstehe ich das auch
Wenn ich das richtig verstand habe dann gibt ibquery eine art Tabelle zurück. Möchte aber dann auf das Resultat zeilenorientiert zugreifen

geht das dann steige ich sofort um würde mir auch besser gefallen

Unter ibquery finde ich alles und nichts die alten Delphi Versionen hatten noch ne gescheite Hilfe ..

Danke schon mal ok bin also quasi schon am gehen von ttable ..
ist dann auch das Transaktion Problem geringer ?

TTable möchte eine Transaktion wenn ich eine locate mache und da nur eine Transaktion geht muss ich mini Transaktion machen so das es eigentlich keinen Sinn mehr macht ...

hoika 11. Jan 2011 20:44

AW: ibtable.Locate xy > 10
 
Hallo,
Delphi-Quellcode:
IBQuery.SQL.Text:= 'Select XXX Where Num>10';
IBQuery.Open;
try
  while not IBQuery.Eof do
  begin

    IBQuery.FieldByName().XXX // aktueller Datensatz

    IBQuery.Next;
  end;
finally
  IBQuery.Close;
end;

Heiko

joehd 11. Jan 2011 20:48

AW: ibtable.Locate xy > 10
 
Danke ! :thumb::thumb::thumb::thumb:
Ich benötige noch eine Transaction oder ?
warum benötige ich ein transaction wen ich nur ne liste abfrage ?
ich habe ein bsp aus einem andern Thread gefunden ..
Wie finde ich aber den nächsten gültigen Eintrag :?:


Sorry ihr seht ich fange mit dem mist an aber vielleicht hilft es ja den andern Anfängern in firebird auch
ich arbeite schon ewig mit databases aber nicht mit SQL Servern
sorry :?:

joehd 11. Jan 2011 20:50

AW: ibtable.Locate xy > 10
 
ich wieder das ist ja ein while
dann ist klar der läuft durch bis alle übetragen sind
ist das so richtig
bis eof
DANKE :thumb::shock::idea::cheers:
ich hänge dann mal etwas source an den Thread wenn ich fertig bin damit alle neuen Fische wie ich auch was von haben ...

mano eigentlich ganz einfach

hoika 11. Jan 2011 20:58

AW: ibtable.Locate xy > 10
 
Hallo,

Zitat:

warum benötige ich ein transaction wen ich nur ne liste abfrage ?
Unter IB/FB läuft alles in einer Transaktion
*darf der Frager selber einbauben*

Zitat:

Wie finde ich aber den nächsten gültigen Eintra
Die Query enthält einfach nur alle gültigen Ergebnisse (Num>X).

Es wird vom SQL-Server eine temporäre Tabelle erzeugt,
die nur die gültigen Ergebnisse enthält.
Diese Ergebnis-Tabelle wird mit der Query durchlaufen.

*Sehr Vereinfacht* gesagt.



Heiko

joehd 11. Jan 2011 21:03

AW: ibtable.Locate xy > 10
 
Danke Heiko
und das laufe ich mit einer While durch
oder ist das eine art array ?

ok das probiere ich dann gleich mal
Ist ein ganz anderes denken als bei File Datanbanken

JHDGE 12. Jan 2011 22:04

AW: ibtable.Locate xy > 10
 
Noch ne kleine Frage
Wie suche ich denn unscharf nach Strings

Delphi-Quellcode:
Select * from Adrtab where 'Adrname' like 'Mu*'
Das geht aber nicht

Delphi-Quellcode:
Select * from Adrtab where 'Adrname' starting with 'Mu*'
:thumb:

geht :dancer:

aber es gab doch bei SQL auch ein unscharfes Select ? :gruebel:

Es muss doch eine Liste der möglichen where syntax geben !

Gibt es irgend wo eine Hilfe der Firebird ibquery SQL Statements :gruebel:

Danke

P.s. bis auf das Problem mit der unscharfen Suche klappt es gut ...

Also bei Locate war es der Parameter loPartialKey

aber ich kenne ibtable ja schon nicht mehr :-D

OK einen Link habe ich gefunden !

Bei Google suchenFirebird SQL Reference Guide

Bei Google suchenfbrefguide_preview3.pdf

Bummi 12. Jan 2011 22:43

AW: ibtable.Locate xy > 10
 
ich kenne Firebird nicht aber die übliche SQL-Syntax wäre
Code:
where Feld like 'Mu%'
oder auch
Code:
where Feld like '%us%'

JHDGE 12. Jan 2011 22:44

AW: ibtable.Locate xy > 10
 
Danke schon mal das werde ich doch auch gleich mal testen

und gibt es bei where die üblichen

and, or, ...

Bummi 12. Jan 2011 22:58

AW: ibtable.Locate xy > 10
 
versuch macht klug ;-)

JHDGE 12. Jan 2011 23:02

AW: ibtable.Locate xy > 10
 
ich versuche schon ich mags nicht sagen wie lange

Delphi-Quellcode:
Select * from esdat where Upper(ESDDIAG) = upper('%Eintrag%')
geht nicht


Delphi-Quellcode:
Select * from esdat where Upper(ESDDIAG) = '%EINTRAG%'
geht


die Funktion Upper macht die % kaputt na sowas

ein Elend das probieren

mkinzler 13. Jan 2011 05:23

AW: ibtable.Locate xy > 10
 
Nein es fehlt nur das like
SQL-Code:
Select * from esdat where Upper(ESDDIAG) like upper('%Eintrag%');

hoika 13. Jan 2011 06:28

AW: ibtable.Locate xy > 10
 
Hallo,

ein bissel anders, aber

Stelle dir die Query einfach als mit Table.IndexName vorsortierte Tabelle vor,
bei dem Query.Open mit FindKey an den ersten gefundenen Eintrag gesprungen wurde
und in der im while schon die Abbruchbedingung drinsteht (erster nicht mehr gültiger Wert).
Ist also quasi ein per SetRange eingeschränkte Sicht auf die Tabelle.

Übrigens kann mann per BDE auch bei DBase/Paradox mit TQuery auf Tabellen zugreifen.


Heiko

mkinzler 13. Jan 2011 06:31

AW: ibtable.Locate xy > 10
 
Nur ist TQuery bei dBase/Paradox dann über die Tabellen implementiert und bei richtigen DBMS Tables auf Abfragen

JHDGE 13. Jan 2011 19:35

AW: ibtable.Locate xy > 10
 
igitt BDE oder paradox ne ne
sowas habe ich erst gar nicht angefangen

nativ auf Die DBF Dateien mit Codebase schnell unkompliziert keine Treiber eine DLL und eigene Objekte und Funktionen und alles ist gut...

ne Paradox das hatte ich mal ...

ne jetzt SQL ist schon gut würde ich sagen ...

Da mein Programm sehr Modular aufgebaut ist so konnte ich ziemlich schnell von ibtable auf ibquerry umsteigen ...

Aber der Beginn ist ein schei...

Danke schon mal aber es kommen bestimmt noch was an fragen ...

@hoika Danke ich möchte das ja auch vertehen was zu machen ohne es zu verstehen ist sehr gefährlich finde ich zumindest

@mkinzler ich meine ich hatte das Like drinnen sonst hätte das zweite doch nicht funktioniert oder ? Ich denke ich habe es nur falsch rüber kopiert..

mkinzler 13. Jan 2011 19:41

AW: ibtable.Locate xy > 10
 
Ich kann nur den Code beurteilen, den du hier eingestellt hast.
Wenn duu Firebird ab 2 einsetzt, würde ich zu einem expression index raten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 Uhr.

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