Autor Beitrag
35i_driver
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 06.06.03 07:57 
Sicherlich ist das eine absolute Anfängerfrage, aber irgendwie finde ich nirgends eine für mich verständliche Antwort auf meine Frage (hab grad ne Umschulung zum Fachinformatiker begonnen).
Also - wenn ich im folgenden Code das Leerzeichen hinter dem Komma zwischen den Hochkommas entferne bekomme ich folgenden Fehler beim Ausführen: "Ungültige Variant-Typumwandlung"
Warum? Wäre froh, wenn mir jemand weiterhelfen könnte! :?

ausblenden Quelltext
1:
2:
3:
SELECT nr, anrede, nachname + ', ' + vorname AS Bez
FROM personen
WHERE vorgesetzter = :nrvorgesetzter
DarkLord
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Fr 06.06.03 08:55 
Irgendwie verstehe ich garnicht was die +-Zeichen, die Hochkommas etc. da zu suchen haben! Poste doch mal den ganzen Code ausschnitt, damit man sieht wo du das einfügst! Denn in meinen Gedanken würde das jetzt z.B. so aussehen:
ausblenden Quelltext
1:
2:
3:
sql := 'SELECT nr, anrede, nachname, vorname AS Bez 
FROM personen 
WHERE vorgesetzter = ' + nrvorgesetzter;
Vorausgesetzt nrvorgesetzter ist eine Variable und kein Feld.
35i_driver Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 06.06.03 09:44 
also das oben angegebene ist der sql-string einer tquery-komponente.
ich möchte die mitarbeiter einer firma in einer hierarchischen baumstruktur darstellen (chef, abteilungsleiter, personal).
die plus-zeichen, die hochkommas und das komma mit dem darauffolgenden leerzeichen ist dafür da, um beim ablauf des programms die nachnamen, ein komma, ein leerzeichen und dann die vornamen der jeweiligen personen anzuzeigen. soweit funktioniert das ja auch. wenn ich das leerzeichen nach dem komma in dem string allerdings lösche, dann kommt eben dieser fehler. :roll:
hier ist der komplette quelltext:
ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DB, DBTables, Grids, DBGrids, ComCtrls, StdCtrls, Mask, DBCtrls, ImgList;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    ImageList1: TImageList;
    Query1: TQuery;
    Button1: TButton;
    Query2: TQuery;
    Query3: TQuery;
    Query1nr: TIntegerField;
    Query1anrede: TStringField;
    Query1Bez: TStringField;
    ProgressBar1: TProgressBar;
    Table1: TTable;
    Label1: TLabel;
    DataSource1: TDataSource;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    Label4: TLabel;
    Label5: TLabel;
    Table1Nr: TAutoIncField;
    Table1Anrede: TStringField;
    Table1Vorname: TStringField;
    Table1Nachname: TStringField;
    Table1Geburtstag: TDateField;
    Table1Gehalt: TCurrencyField;
    Table1Raum: TIntegerField;
    Table1Telefon: TIntegerField;
    Table1Vorgesetzter: TIntegerField;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

type TArray = array[0..0] of Integer;
var  anzahl : integer;
     zeiger: ^TArray;

procedure TForm1.Button1Click(Sender: TObject);
var  Node1,
     Node2,
     Node3 : TTreeNode;
     i     : integer;

begin
  i := 0;
  table1.open;
  anzahl :=Table1.recordcount;
  progressbar1.max :=anzahl;
  GetMem(zeiger, sizeof(integer)*anzahl);
  Node1:= TreeView1.Items.AddChild(TreeView1.Selected, query1['bez']);
  if query1['anrede']= 'Herr' then node1.imageindex := 2 else node1.imageindex := 1;
  zeiger^[i]:= query1['nr'];
  node1.data := Pointer(zeiger^[i]);
  inc(i);
  progressbar1.position := i;
  node1.SelectedIndex := node1.imageindex;
  query2.active := false;
  query2.parambyname('nrvorgesetzter').value := query1['nr'];
  query2.active:=true;
  while not query2.eof do begin
     Node2:= TreeView1.Items.addChild(Node1, query2['bez']);
     if query2['anrede']= 'Herr' then node2.imageindex := 2 else node2.imageindex := 1;
     node2.SelectedIndex := node2.imageindex;
     zeiger^[i]:= query2['nr'];
     node2.data := Pointer(zeiger^[i]);
     query3.active := false;
     query3.parambyname('nrvorgesetzter').value := query2['nr'];
     query3.active:=true;
     inc(i);
     progressbar1.position := i;
     while not query3.eof do begin
       Node3:= TreeView1.Items.addChild(Node2, query3['bez']);
       if query3['anrede']= 'Herr' then node3.imageindex := 2 else node3.imageindex := 1;
       node3.SelectedIndex := node3.imageindex;
       zeiger^[i]:= query3['nr'];
       node3.data := Pointer(zeiger^[i]);
       query3.next;
       inc(i);
       progressbar1.position := i;
     end;
     query2.next;
  end;
  query1.active := False;
  query2.active := False;
  query3.active := False;
  TButton(sender).enabled := false;
  treeview1.selected := node1;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeMem(zeiger, sizeof(integer)*anzahl);
end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  table1.findkey([integer(treeview1.selected.data)])
end;

end.
DarkLord
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Fr 06.06.03 12:47 
Ahso, hab ein wenig auf dem Schlauch gestanden! Hm... tja, dann weiß ich auch nich so recht warum das nich geht mit Leerzeichen. Sorry!