Einzelnen Beitrag anzeigen

mr.floppy81

Registriert seit: 18. Nov 2004
Ort: Wismar
77 Beiträge
 
Delphi 5 Enterprise
 
#1

DBfeldzugriff mit 'distinct substring' bei mssql

  Alt 28. Jan 2005, 09:27
moin,

habe schon eine ganze weile am rechner gesessen und bei folgendem Problem keine Lösung gefunden:

Es wird eine Variable 'Stückliste' über ein Editfeld namens 'Haupt1.Stueckliste' eingegeben.

In dieser Stückliste ist unter anderem das DBfeld 'bmk' vorhanden.
Das Feld 'bmk' setzt sich wie folgt zusammen:
'=xxx+yyy-zzz'
Dabei ist =xxx das anlagenkennzeichen, +yyy das Ortskennzeichen und -zzz das Bertriebsmittelkennzeichen.

Über ein Query möchte ich aber nur das Ortskennzeichen auslesen was hiermit geschieht:
Delphi-Quellcode:
procedure Thaupt2.FormShow(Sender: TObject);
begin

datamodule5.ADOQuery2.Active:=False;
 datamodule5.ADOQuery2.SQL.Clear;
 datamodule5.ADOQuery2.SQL.Add('select distinct substring(bmk,charindex(' + '''' + '+' + ''''+',bmk,1)+1,charindex(' + '''' + '-' + '''' + ',bmk,1)-charindex(' + '''' + '+' + '''' + ',bmk,1)-1) from procos.stuecklistenpos where stueckliste=' + '''' + Haupt1.Stueckliste.Text + '''');
datamodule5.ADOQuery2.Active:=True;
end
In einer DBlookupcombobox namens 'Ortskennzeichen' werden nun dies Ausgewählten Ortskennzeichen angezeigt, was auch ohne Problem funktioniert.
Wenn ich jetzt allerdings ein Ortskennzeichen auswähle so erscheint die Fehlermeldung:

"Im Projekt1.exe ist eine exception der Klasse eoleexception aufgetreten. Meldung'Ein Objekt das dem angefordertem Namen oder Ordinalverweis entspricht, kann nicht gefunden werden.'Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen"

Soweit ich das verstehe sagt mir das Programm, dass das DBfeld in der Datenbank nicht vorhanden ist. Das ist ja auch richtig.
Aber ich möchte über eben die Ortskennzahl, alle Artikel auswählen, die diese Ortskennzahl besitzen...
Das soll dann hierüber geschehen:
Delphi-Quellcode:
procedure Thaupt2.OrtskennzeichenCloseUp(Sender: TObject);
begin

ortskennz:=ortskennzeichen.Text;
//dies wäre die dblookupcombobox
edit3.text:=ortskennz;
//dies ist nur eine Kontrolle ob er das OKZ übernimmt, was das
//Programm aber schon ncht macht (oben beschriebener Fehler)

datamodule5.ADOQuery3.Active:=false;
datamodule5.ADOQuery3.SQL.Clear;
datamodule5.ADOQuery3.SQL.Add('select sp.artikel,sp.menge,at.VerlustLstg,at.spulehaltelstg from procos.stuecklistenpos sp, procos.arttechnik at, procos.artikel a where sp.stueckliste='+''''+ stuecklist +''''+' and distinct substring(bmk,charindex(' + '''' + '+' + ''''+',bmk,1)+1,charindex(' + '''' + '-' + '''' + ',bmk,1)-charindex(' + '''' + '+' + '''' + ',bmk,1)-1)');
datamodule5.ADOQuery3.Active:=true;

end;
Ich hoffe dass ihr mir bei diesem Problem weiterhelfen könnt, denn wenn wir das beseitigen ist das Programm fast fertig....

LG Andreas



Achso ich vergass: verwendet wird der mssqlserver
  Mit Zitat antworten Zitat