| |
VB & DatenbankenSelect auf MEMO | | | Autor: icolor | Datum: 27.04.12 07:56 |
| Guten Morgen,
wir legen in unserer Datenbank exportiere Sätze in einer Tabelle ab. Hier allerdings in einem MEMO Feld, wobei alle Felder hintereinander gesetzt werden.
Nun möchte ich bei einem weiteren Export gerne prüfen, ob der Satz bereits exportiert wurde. Ein direkter Zugriff mit Vergleich auf das MEMO Feld funktioniert nicht. Ich habe bereits so was ausprobiert:
SELECT * FROM TAB1
WHERE (DAT_LOSTEILE.FELD1 + DAT_LOSTEILE.FELD2 + DAT_LOSTEILE.FELD3) NOT IN
(SELECT LTRIM(RTRIM(STR(TAB2.DATENSATZ))) FROM TAB2 WHERE TAB2.KZ = 'XXX') Ich versuche hier das MEMO Feld in einen String zu wandeln und zu trimmen. Dabei kommt allerdings der Fehler:
[Microsoft][SQL Server Native Client 10.0][SQL Server]Operandentypkollision: text ist inkompatibel mit float
Kann mir jemand den korrekten Weg zur Umwandlung in VB6 aufzeigen ???
Danke | |
Re: Select auf MEMO | | | Autor: icolor | Datum: 27.04.12 08:37 |
| Muss dazu sagen, die Tabellen auf die ich gehe sind MS Access 97. | |
Re: Select auf MEMO | | | Autor: wb-soft | Datum: 27.04.12 08:45 |
| Hi!
SQL Server kennt keinen Feldtyp Memo. Den hast du wohl von der Jet-Engine.
In älteren Versionen (vor 2005) war die Entsprechung der Typ Text. Dabei ist der Vergleichoperator "=" nicht zulässig. Gleiches Ergebnis erreicht man mit dem Oeprator "Like" unter Verzicht auf Wildcards.
Aktuelle Versionen bieten den Typ Varchar(max). Damit ist alles einfacher.
mfg
WB | |
Re: Select auf MEMO | | | Autor: icolor | Datum: 27.04.12 08:56 |
| Und wie soll mich jetzt diese Antwort weiter bringen?
Ich mach einen Vergleich eines Feldinhaltes (MEMO) mit einem Selectspruch. Wie soll ich da mit einem LIKE weiter kommen? Wenn ich das versuche auf LIKE umzustellen kommt der Fehler:
37000: [Microsoft][SQL Server Native Client 10.0][SQL Server]Die Datentypen text, ntext und image sind in dieser Unterabfrage oder in diesem Aggregatausdruck ungültig. | |
Re: Select auf MEMO | | | Autor: Reinhard39 | Datum: 27.04.12 11:55 |
| Hallo!
SELECT * FROM TAB1
WHERE (DAT_LOSTEILE.FELD1 + DAT_LOSTEILE.FELD2 + DAT_LOSTEILE.FELD3) NOT IN
(SELECT LTRIM(RTRIM(STR(TAB2.DATENSATZ))) FROM TAB2 WHERE TAB2.KZ = 'XXX') Deine DB versteht dich nicht und muß raten. + und & sind NICHT dasselbe!
+: Addieren
&: Strings verketten
Du willst offenbar Strings verketten. In VB bitte dabei den &-Operator verwenden.
In deinem Fall allerdings soll die DB Strings verketten, das geht mWn nur mit SQL-CONCAT() (Concatenate), also:
CONCAT(CONCAT(DAT_LOSTEILE.FELD1, DAT_LOSTEILE.FELD2), DAT_LOSTEILE.FELD3).
Kann sein, daß gewisse RDMS den +-Operator für Strings erlauben; ich würde es aber so NIE anwenden, man handelt sich Probleme ein.
Ich erlaube mir aber anzumerken, daß das ein, gelinde gesagt, krudes Design ist. Warum nicht eine Bool-Spalte in der Tabelle mit Namen "ExportOK" oder so, die beim Export auf "True" gesetzt wird? Beim erneuten Export einfach alle selektieren, bei denen ExportOK noch auf "false" steht.
Gr??e,
Reinhard | |
Re: Select auf MEMO | | | Autor: wb-soft | Datum: 28.04.12 06:45 |
| Hi!
Eine eigene Spalte für den Export wäre eine saubere Lösung, sofern die die Information ausreichend ist.
mfg
WB | |
Re: Select auf MEMO | | | Autor: wb-soft | Datum: 28.04.12 21:17 |
| Hi!
Zitat: | | Und wie soll mich jetzt diese Antwort weiter bringen? | |
Dein Betreff lautet: "Select auf MEMO". Genau dazu habe ich geantwortet.
Dein Posting bezüglich Access 97 hat sich mit meiner Antwort überschnitten, ich habe es also vorher nicht gesehen.
Ausgehend von der Annahme, daß es um SQL Server geht, habe ich auf die Verwendung von "Like" hingewiesen. Möglicherweise funktioniert das auch mit der Jet-Engine.
Dabei ist mir nicht aufgefallen, daß du eventuell Rechenoperationen mit nicht numerischen Feldern versuchst. Ich kenne ja auch deine DB nicht.
mfg
WB | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|