AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Label, Editfeld und DBlookupListbox
Thema durchsuchen
Ansicht
Themen-Optionen

Label, Editfeld und DBlookupListbox

Ein Thema von Hansa · begonnen am 23. Jan 2003 · letzter Beitrag vom 28. Jan 2003
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11
  Alt 24. Jan 2003, 12:39
Hi,

Zitat von X-Dragon:
Kann man nicht die ID direkt als String auslesen?
Nein, kann man nicht ! Die ID ist in der DB als integer hinterlegt.

Etwas einfacher geht es aber schon (so wie ich es am Anfangang gemacht habe :
Zitat:
]Mit FieldValues können Sie auf die Werte der Felder in einer Datenmenge zugreifen. Geben Sie einfach das gewünschte Feld mit dem Parameter FieldName an.
Bei mir also so:

WGDS.FieldValues ['ID'];

Dann entfällt die Typumwandlung, bzw. wird sie intern gemacht !!

Zitat von X-Dragon:
Aber eventuell dann noch das "=" durch LIKE ersetzen, falls dann eine Fehlermeldugn kommt "Type Mismatch ..." .
Nee, nee. Fange nicht auch noch solchen Unfug an. = wird benutzt bei genauen Vergleichen und LIKE mit % usw. bei ungenauen Vergleichen, Suchen usw. LIKE ohne % ist bei mir gleich =.

Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12
  Alt 24. Jan 2003, 12:42
@harrybo : das da drucke ich mir aus, hol es mit und lese es zum Nachtisch. Auf den ersten Blick ist das das Gesuchte!

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#13
  Alt 24. Jan 2003, 12:50
Zitat von Hansa:
Hi,

Zitat von X-Dragon:
Kann man nicht die ID direkt als String auslesen?
Nein, kann man nicht ! Die ID ist in der DB als integer hinterlegt.
Warum soll das nicht gehen?

Durch das .AsString Sagst Du deinem DataSet nämlich wie Du es haben möchtest.

Ich kann z.B. folgendes machen.
In der Tabelle ist das Feld NUMMER als Integer deklariert.

Code:
 var
  i_nummer  : Integer;
  s_nummer  : String;

begin
 i_nummer := Query1.FieldByName ('nummer').AsInteger;
 s_nummer := Query1.FieldByName ('nummer').AsString;
end;
Zumindest geht das so bei mir.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14
  Alt 24. Jan 2003, 13:16
Hi Sharky,

das stimmt ja alles, aber guck Dir mal die Beiträge weiter oben an. FieldValues gibt es ja auch noch

Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15
  Alt 24. Jan 2003, 14:23
Hi,

Zitat von harrybo:
WGDS.Params.CreateParam(ftInteger, 'ID');
Das da compiliert er bei mir nicht. Im OI finde ich das auch nicht. Wahrscheinlich liegt es daran, daß ich nicht IBX sondern FIBplus verwende. Weiß dazu jemand was ? Glaube nicht. Dann werde ich wohl oder übel mein englisch bemühen müssen, um einem Russen eine Frage zu stellen.

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#16
  Alt 24. Jan 2003, 14:47
Zitat von Hansa:
...

Nee, nee. Fange nicht auch noch solchen Unfug an. = wird benutzt bei genauen Vergleichen und LIKE mit % usw. bei ungenauen Vergleichen, Suchen usw. LIKE ohne % ist bei mir gleich =.

Gruß
Hansa
Hab ich auch gedacht, bis ich das Problem bei der DBase-DB hatte. Also immer trifft das nicht zu, kannst ja nochmal in meinen Thread schauen .
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#17
  Alt 24. Jan 2003, 15:19
Hi Hansa,
das liegt wahrscheinlich nicht am Unterschied zwischen FIBplus und IBX, ich wusste nur nicht, womit Du überhaupt arbeitest. Die Sache ist für Dich dann einfacher, die Queries haben automatische Parameter (siehe Object Inspector). Du brauchst den Parameter nicht zu definieren und kannst einfach zuweisen, z.B. mit
Query1.Params[0].Value := APar; Gibt es keinen Parameter, wird er angelegt.

Hier mal eine allgemeine Funktion, die ein Dataset mit einem Parameter refreshed (IBX und Interbase). Übergeben wird das Dataset Object, der Wert des Parameters, der ID Wert auf den der Datensatzzeiger positioniert werden soll, Konstante, die sagt, was mit der laufenden Transaction passieren soll:
Delphi-Quellcode:
procedure TDM.RequeryDS1(ADataset: TIBDataset; APar: variant; AID: longint; AType: integer);
begin
  with ADataset do try
    DisableControls;
    if Active then if State in [dsEdit, dsInsert] then Post;
    Close;
    if Transaction.InTransaction then
      case AType of
        c_Commit : Transaction.Commit;
        c_CommitRetain : Transaction.CommitRetaining;
        c_Rollback : Transaction.Rollback;
      end;
    if not Transaction.InTransaction then Transaction.StartTransaction;
    Params[0].Value := APar;
    Active := true;
    if AID > 0 then Locate(Fields[0].FieldName, AID, []);
  finally
    EnableControls;
  end;
end;
gruß, harrybo
Harry Boldt
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18
  Alt 24. Jan 2003, 20:29
Hi harrybo,

wo kommt denn das RequeryDS1 hin ? Du scheinst da eine allgemeine Prozedur geschrieben zu haben. Im OI ist hierüber jedenfalls nichts zu finden.

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#19
  Alt 24. Jan 2003, 22:30
Hi Hansa,
ja, es ist eine selfmade Procedure, die bei mir im Datamodul und dort im Public Abschnitt, damit man von draußen Zugrif drauf hat. Da ein Datamodul meist mehrere TDataset Objekte versammelt, kann man der Procedure noch mitteilen, welchen Dataset man aktualisieren will. Der Aufruf kann dann so aussehen:
DM.RequeryDS1(DM.dsTER, gActDate, gActRec.TER, c_Commit); DM.dsTER ist hier ein TDataset, der Rest spricht für sich, hoffe ich (nach meinen Erfahrungen mit X-Dragon trau ich mich ja kaum noch, feste Werte irgendwo reinzuschreiben).

gruß, harrybo

P.S. sieht nach Master Detail aus, was Du vorhast. Da gibt es ja, zumindest bei IBX, die code-lose Variante mit zusätzlicher Datasource, die wunderbar läuft (ok, ein einziger BeforeInsert Trick).
Harry Boldt
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20
  Alt 26. Jan 2003, 12:54
Hi,

Zitat:
trau ich mich ja kaum noch, feste Werte irgendwo reinzuschreiben).
Kommt drauf an, wem Du das schreibst. Bei mir kannst Du es ruhig reinschreiben. Komme mit den Parametern nämlich nicht so ganz klar. Kannst Du mir die mal kurz erklären ? Ich habe mir mal mein Programm neu angesehen und dabei gemerkt, daß ich so eine Prozedur gut gebrauchen könnte. Wahrscheinlich aber modifiziert.

Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 14:16 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