| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Phoenix/PDM von ORCON bei Atlanta Antriebssysteme , ein Anwenderbericht
|
Autor
|
Thema: SQL Abfrage innerhalb von PSP (1369 mal gelesen)
|
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 23. Mai. 2008 16:33 <-- editieren / zitieren --> Unities abgeben:         
|
blacky1985 Mitglied Application Engineer
 
 Beiträge: 348 Registriert: 16.04.2008 PSP 2008 SP1 PSP 2009 SP1 PSP 2010 AIP 2008 SP3 AIP 2009 SP2 AIP 2010
|
erstellt am: 23. Mai. 2008 21:48 <-- editieren / zitieren --> Unities abgeben:          Nur für T to the F
Ich weiß nicht, ob dir das folgende genau hilft, bzw. du darauf hinaus willst, aber ich schreibe dir mal die Antwort. Code:
___Environment(DOC_IDENT=#(where db=Folder_EngineeringDocument AIMKEY='1254.27999' #(IDENT)));
Hiermit kannst du z.B. in die Variable DOC_IDENT den IDENT des Dokumentes schreiben, der zu dem AIMKEY 1254.27999 gehört. Also im Prinzip eine einfache SELECT...WHERE Abfrage, die natürlich beliebig geändert werden kann. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 24. Mai. 2008 16:14 <-- editieren / zitieren --> Unities abgeben:         
Hi, um genau zu sein, brauch ich diese abfrage SELECT MAX FIELD01 FROM dbo.ELEMENT WHERE FIELD02 like '03%' und das ergebnis soll dann eine Variable gepackt werden. ich weiß nicht so recht wie ich die in ne Environment packen soll... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 28. Mai. 2008 13:30 <-- editieren / zitieren --> Unities abgeben:          Nur für T to the F
|
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 30. Mai. 2008 16:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo, danke für die Antworten. Das Problem ist, das die Felder variieren z.b. nicht nur FIELD01 und FIELD02. ODer auch das Element like'03%' kann auch mal 12 oder 36 oder iregendwas anderes sein. Es wäre halt vorteilhaft, wenn das mit einem oder mehreren Befehlen gehen würde, damit man das ergebnis dann in einer Variablen gleich weiter im Programm verwenden kann. (Ergebniswert wäre z.b. 001 oder 089, je nach MAX abfrage...) Ich hoffe Ihr könnt mir weiterhelfen... bin momentan etwas ohne aussicht Vielen Dank!!!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 31. Mai. 2008 04:52 <-- editieren / zitieren --> Unities abgeben:          Nur für T to the F
Ich denke du wirst deine Anforderungen etwas konkreter formulieren müssen. Egal was für Werte du in deinem LIKE haben möchtest, die müssen ja irgendwo her kommen, also müssen sie auch irgendwo abfragbar und in weiterer Folge als variable Parameter einsetzbar sein. Dass die abzufragenden Felder wechseln sollen entzieht sich zur Zeit noch meinem Verständnis, entweder hast ein paar grundlegende Fehler in deinem Datenbankentwurf oder du versuchst gerade, einzelne Punkte, die eigentlich getrennt gehörten, zusammenzufassen. Beschreib mal deine Ausgangssituation, welche Bedeutung die Felder und Werte bei dir haben, was du effektiv erreichen willst und welche MIttel dir zu Verfügung stehen. Am besten sowohl in allgemeingültiger Form als auch mit zwei bis drei Beispielen. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 17. Jun. 2008 11:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo, tut mir leid ich war jetzt lang nicht in der Firma.. unterwegs etc Im grundlegenden geht es um die Bezeichnung(zusammengesetzt aus mehreren feldern) von einer neuen Zeichnung. Diese soll eindeutig sein (deswegen like, da er in abhänigkeit des vorgegangenen feldes "feld 2 abhänig von feld 1 und dann das maximum ausgeben") Eingegeben wird diese in: Hauptgruppe Baugruppe/teil...etc Der befehl GetMaxKey ist genau das was ich benötige. Jedoch müsste dieser irgendwie in abhänigkeit sein von einem anderen zb (syntax fuktioniert jetzt nicht aber so würde ich sie gerne haben) Vielen Dank für die Antworten!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 17. Jun. 2008 21:20 <-- editieren / zitieren --> Unities abgeben:          Nur für T to the F
Zitat: Original erstellt von T to the F: Im grundlegenden geht es um die Bezeichnung(zusammengesetzt aus mehreren feldern) von einer neuen Zeichnung. Diese soll eindeutig sein
ok, da komm ich noch mit, obwohl ich mir die Frage stelle, ob die Zeichnungsnummer nicht schon reichen würde für eine Eindeutigkeit. Zitat: Original erstellt von T to the F: deswegen like, da er in abhänigkeit des vorgegangenen feldes "feld 2 abhänig von feld 1 und dann das maximum ausgeben")
Diesen Satz versteh ich trotz mehrfachem Durchlesens immer noch nicht, sorry.
Zitat: Original erstellt von T to the F: zb (syntax fuktioniert jetzt nicht aber so würde ich sie gerne haben)
ähmmm.... sollte da noch ein Beispiel folgen oder so? Na gut, du willst also die Bezeichnung für eine neue Zeichnung erstellen, wenn ich richtig verstehe. Die Bezeichnung soll eindeutig sein. Auch gut. Aber was setzt du nun in Abhängigkeit womit?
Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 18. Jun. 2008 08:17 <-- editieren / zitieren --> Unities abgeben:         
|
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 18. Jun. 2008 13:55 <-- editieren / zitieren --> Unities abgeben:          Nur für T to the F
jetzt versteh ich was meinst. Die Funktion MaxKey kenne ich leider nicht (mehr?), so dass ich dazu leider nichts sagen kann, hab auch grad keine Doku hand.... Mit einer gespeicherten Prozedur allerdings kommst sicher an's Ziel. Du übergibst einfach den aktuellen Wert aus Feld01 (also z.B. '003') als Parameter an die Prozedur und formulierst die Abfrage in etwa so: @NeuerWert = Select Max(Feld02)+1 From TabelleXY Where Feld01 = @Parameter Den so erhaltenen Wert brauchst dann nur noch formatieren, um die führenden Nullen wieder zu erhalten, sollte in etwa so funktionieren: @NeuerWert = Left('000',3-Len(@NeuerWert)) + Cast(@NeuerWert as varchar(3)) Die Prozedur lässt sich dann natürlich beliebig erweitern, um auch Feld03 noch miteinzubeziehen. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! [Diese Nachricht wurde von WolfgangE am 19. Jun. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 18. Jun. 2008 19:01 <-- editieren / zitieren --> Unities abgeben:         
|
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 19. Jun. 2008 15:00 <-- editieren / zitieren --> Unities abgeben:         
Hallo, Vielen Dank! ich habe jetzte eine Prozedur erstellt und die Liefert mir auch den richtigen wert (in SQL Management Studio wenn ich die Prozedur ausführe) Noch ein letztes. Wie führe ich aus PSP das aus? ich habe schon 200 mal die syntax in der Doku gelesen... Beispiel in Doku: ___Environment ( StlId=#(XDWSFKT:sumstl ( ,#AIMKEY,$(arg:v1) ) ) ); Meine: ___Environment (TFO_Input=#(XDWSFKT:KompoMax (,TFO_RetValue)))
Meine Procedur heißt KompoMax. Die TFO_RetValue ist die Rückgabevariable. Input ist der SELECT...WHERE... = TFO_Input Bloß iwie bekomm ich nix zurück... Weißt du was ich falsche mache?
Vielen Dank!!!!!!!!1
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 19. Jun. 2008 17:10 <-- editieren / zitieren --> Unities abgeben:          Nur für T to the F
kann es sein, dass bei deinem Aufruf vor dem "TFO_RetValue" ein $-Zeichen fehlt? Hast du bei deiner SQL-Prozedur den ersten Parameter als OUTPUT-Parameter definiert? ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 19. Jun. 2008 17:27 <-- editieren / zitieren --> Unities abgeben:         
|
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 20. Jun. 2008 11:51 <-- editieren / zitieren --> Unities abgeben:         
|

| |
T to the F Mitglied
 
 Beiträge: 398 Registriert: 06.06.2007 Win 7 x64 SP1 PrDS 2012 Ultimate Vault Pro 2012 i7 M640 8 GB Quadro FX 1800M
|
erstellt am: 20. Jun. 2008 12:13 <-- editieren / zitieren --> Unities abgeben:         
Ich habs!!!! Der Befehl ist: ___Environment (TFO_RetValue=#(XDWSFKT:KompoMax (,22) ) ) Vielen Dank an allen die sich das durchgelesen haben und sich gedanken gemacht haben!
[Diese Nachricht wurde von T to the F am 20. Jun. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |