Autor Beitrag
Flons
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 17.02.09 15:42 
Hallo zusammen,

leider hat meine Suche nicht das gewünschte Ergebnis geliefert oder ich habe falsch gesucht...


Ich habe mir eine View erstellt, die neben DB- Feldern auch ein künstliches Feld enthält:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
Select
a
,b
,c
,null kuenstliches_feld
from 
Tabelle


Nun möchte ich in Delphi (Version 7, DB- Verbindung aus historischen Gründen über BDE) in einer TQuery alle Felder hinzufügen.
Also zuerst in SQL (TStrings) das Statement reinkopiert.
Dann über den Feld- Explorer "Alle Felder hinzufügen" ausgewählt.

Es werden alle Felder hinzugefügt/angezeigt, bis auf das "künstliche" DB- Feld.


Warum wird mein künstliches Feld nicht hinzugefügt??

Danke schon mal im Voraus.

Gruß
Flons

Moderiert von user profile iconmatze: Code- durch SQL-Tags ersetzt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.02.09 16:04 
Vergib mal einen Alias auf das künstliche Feld.
Flons Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 17.02.09 16:18 
Hallo DeddyH,

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
Select
a
,b
,c
,null kuenstliches_Feld
from 
Tabelle


Hier sollte "kuenstliches_Feld" doch der Alias sein ?!

Flons

Moderiert von user profile iconmatze: Code- durch SQL-Tags ersetzt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.02.09 16:37 
ausblenden SQL-Anweisung
1:
2:
3:
4:
SELECT
  a,b,c,NULL AS kuenstliches_Feld
FROM 
  Tabelle

So ist kuenstliches_Feld der Alias, welcher NULL enthält. Das müsste eigentlich klappen.
Flons Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 17.02.09 16:43 
Hallo DeddyH,

ich habe (durch Zufall) die/eine Lösung gefunden:

Sobald ich einen "Wert" reinschreibe, geht es. Mit null um's Verrecken nicht.

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
Select
a
,b
,c
,'yyy' kuenstliches_Feld
from
Tabelle


Flons

Moderiert von user profile iconmatze: Code- durch SQL-Tags ersetzt
alex517
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 60


D7Ent, FB, FIBPlus
BeitragVerfasst: Di 17.02.09 16:57 
Hi,

gib doch mal den Typ des Feldes mit an
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
Select
  a, b, c,
  CAST(NULL as VARCHAR(10)) kuenstliches_Feld
from
  Tabelle

alex
Flons Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 18.02.09 08:39 
Hi Alex,

user profile iconalex517 hat folgendes geschrieben Zum zitierten Posting springen:
Hi,

gib doch mal den Typ des Feldes mit an
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
Select
  a, b, c,
  CAST(NULL as VARCHAR(10)) kuenstliches_Feld
from
  Tabelle

alex


danke...

Genau so geht es!!!
You made my day! :dance2:

Gruß
Flons
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.02.09 10:06 
Wobei sich mir der Sinn noch nicht erschließt. Wozu eine Spalte, in der immer NULL steht? Aber Du wirst schon wissen, was Du tust ;)
alex517
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 60


D7Ent, FB, FIBPlus
BeitragVerfasst: Fr 20.02.09 10:57 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Wobei sich mir der Sinn noch nicht erschließt. Wozu eine Spalte, in der immer NULL steht? Aber Du wirst schon wissen, was Du tust ;)


- bei Union mit verschiedenen Tabellen als Platzhalter für nicht vorhandene Felder
z.B. Tabelle B hat kein Feld SubTyp:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
select
  A.ID,
  A.Bez,
  A.Typ,
  A.SubTyp
from A

union

select
  B.ID,
  B.Bez,
  B.Typ,
  CAST(NULL as INTEGER)
from B



- als Platzhalter bzw. als Kalkulationsfeld in der lokalen Datenmenge (CachedUpdates=true).
z.B. wenn im Programm die Daten mit mehreren Durchläufen verarbeitet werden und eine Markierung
je Datensatz notwendig ist oder als Berechnetes Feld OHNE das die Ergebnisse in die
Datenbank zurückgeschrieben werden.
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
SELECT
  P.ID,
  P.KUERZEL,
  P.GESAMT_PREIS
  , CAST(NULL as INTEGER) AS PPOS
  , CAST(NULL as NUMERIC(18,4)) AS SUMME
FROM
  RPOSTEN P
  JOIN RECH R on (R.ID = P.RECH_ID) 
WHERE
  R.DATUM_BIS >= '01.01.2009'

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
procedure TForm1.Button1Click(Sender: TObject);
var
  lSum: Currency;
  lPos: Integer;
begin
  dbTemp.Open;
  dts.Open;

  lSum := 0;
  lPos := 0;
  dts.CachedUpdates := true;
  while not dts.Eof do
  begin
    inc(lPos);
    lSum := lSum + dtsGESAMT_PREIS.AsCurrency;
    dts.Edit;
    dtsSUMME.AsCurrency := lSum;
    dtsPPOS.AsCurrency := lPos;
    dts.Post;
    dts.Next;
  end;
  dts.First;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  dts.CancelUpdates;
end;



Ob das jetzt sinnvoll ist oder besser mit anderen Mittel lösbar ist eine andere Frage.:D


alex