| Autor |
Beitrag |
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: So 17.08.03 20:57
Moin,
irgendjemand steht mir glaub ich gerade aufm Schlauch, folgendes nimmt die IBConsole net an, sie meldet immer in Zeile 24 Spalte 100 "Token unknown". Die Frage ist erstmal, wo das ist (die Console ist ja net wirklich so schlau mit den Angaben) und vor allem, wo das Problem liegt. Es müsste theoretisch irgendwo am Ende der ersten FOR-Schleife liegen, also beim upper(:searchtext).
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:
| ALTER PROCEDURE adressensearch ( searchfield VARCHAR(20), searchtable VARCHAR(20), searchtext VARCHAR(50) ) RETURNS ( anr INTEGER, firma VARCHAR(100) CHARACTER SET ISO8859_1, strasse VARCHAR(100) CHARACTER SET ISO8859_1, PLZ CHAR(7) CHARACTER SET ISO8859_1, ORT VARCHAR(100) CHARACTER SET ISO8859_1, TEL VARCHAR(100) CHARACTER SET ISO8859_1, FAX VARCHAR(100) CHARACTER SET ISO8859_1, MAIL VARCHAR(100) CHARACTER SET ISO8859_1, HOMEPAGE VARCHAR(100) CHARACTER SET ISO8859_1 ) AS BEGIN IF (:searchtable='ansprechpartner') THEN BEGIN FOR SELECT anr,name,vorname FROM ansprechpartner WHERE (UPPER(:searchfield) STARTING WITH UPPER(:searchtext)) INTO :anr DO BEGIN FOR SELECT anr,firma,strasse,plz,ort,tel,fax,mail,homepage FROM adressen WHERE anr=:anr DO SUSPEND; END; END END ^ |
Danke im Voraus 
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 18.08.03 06:45
Hi!
Da ist ein Semikolon hinter einem End.
Cu,
Udontknow
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 18.08.03 06:47
Hehe, nene, das ist es nicht, hatte das mal testweise reingemacht, aber er bringt den Fehler in einer Zeile irgendwo vorher. Aber danke für den Versuch 
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 18.08.03 06:55
Wie ist die genaue Fehlermeldung? Normalerweise sagt er ja, welches Token nun unbekannt ist.
Was sagt denn der IBExpert? Der ist eigentlich sehr viel besser als die IBConsole. Lade dir mal die Personal-Version herunter.
Cu,
Udontknow
Nachtrag: Stört er sich vielleicht daran, daß du die Felder anr,name,vorname selektierst, aber nur ein Feld im into-Bereich erwähnst?
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 18.08.03 07:43
Das mit der Fehlermeldung ist es ja, ich versteh's net, aber ich hatte die Zeile nach Token unknown irgendwie übersehen, vll. bringt die weiter:
SQL Error Code = -104
Token unknown - line 29, char 6
DO on line 2: ALTER PROCE....
hab bissi dran geschraubt, seh aber immer noch net, wo's liegt
Ich hol mir gerade die Version, danke für den Tipp
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 18.08.03 07:47
Hast du meinen Nachtrag gelesen?
Cu,
Udontknow
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 18.08.03 07:49
Ne, übersehen, aber jetzt: Nein, daran liegt es nicht, das habe ich auch schon ausprobiert, hab 2 weitere Variablen deklariert, in das INTO eingefügt und trotzdem denselben Fehler bekommen.
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 18.08.03 15:12
OK, hab jetzt mit IBExpert noch rumprobiert. Es lag an der 2. SELECT-Anweisung, weil ich da kein INTO hatte und dann wollte er doch alle Felder für das INTO. Naja, egal.
Aber jetzt noch was anderes:
Die WHERE-Anweisung:
Quelltext 1:
| WHERE (UPPER(:searchfield) STARTING WITH UPPER(:searchtext)) |
nimmt er so ja nicht, da er ja dann 2 Strings miteinander vergleicht. Gibt es da eine Möglichkeit, dass ich als Parameter einen Feldnamen übergebe und die SELECT-Anweisung dann das angegeben Feld verwendet und das nicht als String nimmt? (s. :searchfield)
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Mo 18.08.03 17:11
Hallo,
ich kann da leider nicht richtig weiterhelfen, außer das ich vor dem gleichen problem gestanden bin und es dann sein ließ.
Was ich damals in erfahrung brachte, ist, daß das Feld in dem gesucht wird, fest-gecoded sein muss, daß liegt wahrscheinlich an der Erzeugung des Codes im Interbase Server.
Wenn also jemand eine Lösung für das Problem hat, wäre auch ich ihm sehr dankbar.
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 18.08.03 17:34
Das wäre in meinem Fall aber ziemlich schlecht, denn ohne das, müsste ich auf jedes Feld mit if prüfen und dann den ganzen Code soviele Male schreiben usw..... oh mein gott.....
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 18.08.03 20:34
Ich meine, irgendwo gelesen zu haben, daß so eine Art TableByName-Funktion bald von Firebird unterstützt werden soll.
Cu,
Udontknow
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 18.08.03 22:15
| Udontknow hat folgendes geschrieben: | | Ich meine, irgendwo gelesen zu haben, daß so eine Art TableByName-Funktion bald von Firebird unterstützt werden soll. |
Das ist schön für Firebird, aber Auftraggeber verlangt Interbase 6 *seufz*
Aber werd ich mir für die zukunft merken
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 18.08.03 23:28
Die Parameter sind offensichtlich bei Dir nicht richtig gesetzt.
_________________ Gruß
Hansa
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 19.08.03 06:46
| hansa hat folgendes geschrieben: | | Die Parameter sind offensichtlich bei Dir nicht richtig gesetzt. |
Gesetzt? Erklär mir das mal genauer, versteh leider nicht ganz, was Du meinst
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 19.08.03 09:22
Hi,
habe jetzt mal nachgeschaut. So sieht das bei mir aus:
| Zitat: |
ArtDS.Close;
ArtDS.SelectSQL.Text := 'SELECT * FROM ART WHERE UPPER (BEZ) LIKE UPPER (''%' + LabeledEdit1.Text + '%'') ORDER BY NR';
ArtDS.Open;
|
Wie ich vermutet hatte, keine stored procedure. Ich suche nach einem beliebigen Namensbestandteil, der sich vorne oder hinten in der Artikelbezeichnung befinden kann. Groß/Kleinschreibung habe ich gleich mit erledigt.
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 19.08.03 10:04
@Hansa:
Wieso keine Stored Procedure? UGrohne´s Problem ist, innerhalb der Stored Procedure "Adressensearch" variabel auf verschiedene Tabellen, abhängig von einem Parameter, zuzugreifen.
Cu,
Udontknow
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 19.08.03 11:17
@hansa: Das ist eine gute Möglichkeit für eine Tabelle, wie udontknow schon erkannt hat. Bei mir verhält sich das aber etwas anders:
Ich habe eine Adressentabelle mit Firmen, und eine Tabelle mit Ansprechpartnern zu diesen Firmen, also 2 Tabellen, es soll aber in beiden Tabellen (später auch mehr) gesucht werden, aber nur die Firmendaten zurückgegeben, weshalb Deine Methode leider nur schwer anwendbar ist. Aber trotzdem danke
Funktioniert ja soweit, nur wirds jetzt halt ein elends langer Code, eine Änderung und ich muss an vielen Stellen gleiche Sachen ändern. Naja, werds überleben 
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Di 19.08.03 11:18
Hi,
also mit iB6 gibt es keine Möglichkeit innerhalb einer SP "variabel" zu reagieren, außer es wird programmiert:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| CREATE PROCEDURE WasWeissIch (TabellenName CHAR(20)) BEGIN IF (:TabellenName='Test') THEN BEIGN FOR SELECT .... DO SUSPEND; END . . . |
In Firebrid 1.5 gibt es die Möglichkeit (Execute Statement) ein übergebenes SQL-Statement innerhalb der Proc auszuführen:
Quelltext 1: 2: 3: 4:
| CREATE PROCEDURE WasWeissIch (sSQL CHAR(100)) BEGIN Execute Statement :sSQL; end^ |
Näheres dazu in der Release Notes zu RC5!
@UGrohne: Weshalb verlangt Dein Auftraggeber IB 6?? Hat er die kommerzielle Version oder die OpenSource? Bei der OpenSource sollte ein Wechsel sehr dringend angegangen werden, weil die 6er doch einige Probleme hat, die FB ausgemerzt hat, vom Performancegewinn mal ganz abgesehen....
Grüße
Lemmy
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 19.08.03 11:24
@Lemmy: Da laufen auch noch einige andere Sachen auf IB, es ist die OS. Er kann halt nicht einfach umsteigen, da einige Sachen in Firebird doch anders sind
Genau wie Du erst gesagt hast, hab ich es dann gemacht, pro Tabelle und pro Feld einfach ein If 
|
|