Also das Programm lässt sich ganz nochmal debuggen ohne fehler, dann startet es, (in der testdatenbank habe ich 2 einträge, die er mit der sql anweisung ausgeben muss) und wirft nach dem ersten ergebnis ein Fehlerfenster aus "...exe funktioniert nicht mehr.."
Er deutet dann auf einen Fehler im "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility" in folgendem Abschnitt hin
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != 0)
{ // proxy allocated, drain it
_Lockit _Lock(_LOCK_DEBUG);
for (_Iterator_base12 **_Pnext = &_Myproxy->_Myfirstiter;
*_Pnext != 0; *_Pnext = (*_Pnext)->_Mynextiter)
(*_Pnext)->_Myproxy = 0;
_Myproxy->_Myfirstiter = 0;
}
also irgendeine systemdatei, die was mit dem next() zu tun hat(?!). Wie muss man denn vorgehen um mit nmake das Projekt zu kompilieren? Hast du evtl. einen Beitrag der das anschaulich erklärt?
Du kannst die Suche auf die ersten 12 Zeichen einschränken indem du substr(Feld, 1, 12) LIKE '...' verwendest.
Wird aber vermutlich langsamer sein als Feld LIKE 'BLAH%' und auch nicht viel schneller als Feld LIKE '%BLAH%' .
vielen Dank für die Antwort. Habe meine Abfrage angepasst. Muss ja lauten:
AS S on M.ID = S.MatNr
Somit zeigt die Abfrage die richtige Daten.
Gruß
Torsten
Ausgangspunkt Altprojekt: Wir haben aus Anwendungssicht viele verschiedene Businessobjekte die einige Gemeinsamkeiten teilen. In der Datenbank sieht das so aus das es eine "Basis"-Tabelle gibt, über die alle allgemeinen Zuordnungen erfolgen, und die konkreten Typen sind davon "vererbt": Eigene Tabellen zwar, aber die Id stammt aus der Basistabelle. Nun wurden mit der Zeit immer mehr Tabellen auf diese Basistabelle umgestellt, und unser neues Rechtekonzept nutzt diese Basistabelle auch recht intensiv.
Nun kann man dies ja auch anders lösen, in dem man sagt das, das jeder konkrete Datentyp in einer komplett eigenständigen Tabelle liegt, und per Foreign-Key auf eine solche Basistabelle verweist.
Was ist aus Datenbanksicht der sinnvollere Ansatz?
Deine Frage ist etwas unspezifisch. Du hast also noch keine Kenntnisse in SAP-Script? Aufbereitete SAP-Script-Formulare können über den Weg Spool - PDF-Konvertierung - Senden an externe Mail über SAP-Connect versendet werden. Wenn es wirklich das ist, was du meinst.
An Foren wären zu empfehlen:
www.abapforum.com
www.yaabb.de
für spezielle Lösungen
www.tricktresor.de
Habe schon wesentlich dümmere Fragen gesehen, das hier ist ein ziemlich typischer SQL-Anfängerfehler. Wenn man sich noch nicht ganz an SQL gewöhnt hat stolpert man leicht über sowas; wirklich kein dramatischer Blindheitsfall also.
Danke für eure Antworten.
CarstenJ schrieb:
seid ihr denn auch sicher, dass keine EE Features genutzt werden?
Besteht nicht die Möglichkeit, in eine neue DB zu migrieren?
Die Software, welche als Client auf die Datenbank zugreift, läuft mit Oracle 8i Standard. An der Software wird nichts mehr geändert (die Herstellerfirma ist sowieso seit ca. 10 Jahren nicht mehr existent), daher sind technisch gesehen keine EE Features nötig.
Auf Serverseite könnten wir wohl auf eine neue Datenbankversion migrieren (clientseitig muss 8i bleiben). Das würde aber neben den zahlreichen Tests auch eine Neulizensierung nötig machen. Im Moment sind die Kassen klamm und einen solchen Betrag in eine (ur)alte Software zu investieren wäre auch nicht unbedingt vernünftig bzw. durchsetzbar.
CarstenJ schrieb:
Deine Frage an sich kann ich leider auch nicht beantworten, bei den heutigen Installationen ist es aber die gleiche Routine, bei der du am Anfang auswählen musst was du installieren möchtest.
Deshalb hatte ich ja die Hoffnung, dass man bei 8i auch irgendwie "weniger" installieren kann wenn man den EE-Datenträger zur Hand hat.
Was so nervt ist, dass eigentlich nur der SE-Datenträger für Windows fehlt, also ein Produkt für ein paar Euro (bzw. seinerzeit DM) und kein Händler scheint in der Lage zu sein ihn zu besorgen. Oracle selbst will erst eine Neulizensierung, da unser Support-Vertrag ausgelaufen ist und dann können sie möglicherweise noch so einen Datenträger auftreiben. Eine definitive Zusage habe ich da aber auch nicht erhalten.
Neuere Versionen (glaube ab 9i) kann man selbstverständlich bei Oracle kostenlos downloaden, für 8i sollen wir aber die Lizenzen nochmal kaufen. Schon eine komische Politik.
Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
(string.IsNullOrEmpty(_a) ? (output.a== null || output.a.Contains(_a)) : output.a.Contains(_a))
dieses Statement soll quasi die ISNULL-Methode in SQL simulieren und bezwecken, dass auch Datenfelder mit NULL zurückgegeben werden, wenn der übergebene String leer ist.
Die eigentliche Frage ist aber, wie man das CONTAINS mit Wildcards schneller machen kann. Das dauert ja selbst auf dem SQL Server so lange, um das Statement auszuführen. Ich gehe mal davon aus, dass ich hier nicht um die Volltextsuche herumkomme.
Also ich habe es jetzt mit IsNullOrEmpty-Methode der String-Klasse gelöst:
Wenn der übergebene String-Parameter "_a" leer ist, dann soll er mir die Werte mit NULL ODER mit Inhalt ausgeben, ansonsten wird nur die Contains-Funktion auf das Datenfeld angewendet.
from colA in tabelleX where
(string.IsNullOrEmpty(_a) ? (tabelleX.colA == null || tabelleX.colA.Contains(_a)) : tabelleX.colA.Contains(_a))
Oder habe ich hier einen Denkfehler gemacht?
@jenz
Nein, garantieren kann man natürlich nie etwas.
Aber Änderungen werden einfacher, wenn nur ein Programm existiert welches direkt auf die DB zugreift.
Und ein Datenmodell, das nicht darauf ausgelegt ist dass das Serverprogramm sehr schnell abfragen kann, ob gecachte Daten noch aktuell sind, wird evtl. einfacher als eines, wo das doch möglich sein muss.
Aber je länger ich darüber nachdenke, desto eher denke ich Variante A ist auf jeden Fall besser.
Vielleicht hat jemand etwas ähnliches festgestellt: Wir arbeiten mit einer Access-Datenbank [2003, reine Datenhaltung ohne VBA & Co] aus einer C++ Anwendung heraus. Seit kurzen hat ein Kunde in mehreren voneinander unabhängigen Datenbanken Probleme in Bezug mit Autowert-Spalten.
Und zwar kommt irgendwann eine Index-Verletzung, weil der Autowert urplötzlich nicht mehr auf dem Maximalwert aufsetzt, sondern irgendwo vorher. Das Problem wird zwar durch ein Komprimieren/Reparieren behoben (Unsere Anwendung ruft dies über die Jet-Engine auch beim Abmelden des letzten Benutzers auf, Interessanterweise repariert dieser Aufruf es aber nicht immer, aus Access heraus hat es bislang immer funktioniert), aber dies ist keine Dauerlösung. Seit dem ersten Auftreten kommt es nun alle paar Tage wieder zur gleichen Situation.
Ein anderer Kunde hat nun ein ähnliches Problem (wobei hier eher von einer Datenmanipulation auszugehen ist, da gleichzeitig auch der Primärschlüssel einer Tabelle inkl. Index fehlt, aber ansonsten keine Daten betroffen sind).
Die einzige Überschneidung zwischen den Rechnern die wir bisher gefunden haben war der Sophos Virenscanner (Ansonsten unterscheiden sich die Systeme und Betriebssystemversionen sehr stark).
Kennt jemand ein ähnliches Phänomen und potentielle Ursachen für solche Probleme?
Hi Luke@Tal,
wenn Du C++-Builder verwendest kannst Du die Komponenten aus dbGo nehmen, und ansonsten würde ich Dir das Buch ADO-Programmierung von David Sceppa empfehlen (Basiert auf VB).
Ich selber habe mir auch sehr mit ADO und Delphi von Andreas Kosch geholfen, da ich mit Delphi arbeite. Was er schreibt ist recht weiterhelfend und im C++Builder genau so anzuwenden.
Wenn Du mit anderen Umgebungen arbeitest, schau doch mal ob es was zu dbGo vergleichbares gibt.
Vielleicht kannst Du Dir auch irgendwo den Kosch ausleihen, der beschreibt nicht nur wie es mit dbGo geht, sondern auch wie man mit den darunter liegenden MS-Objekten arbeitet.
Gruß Mümmel
Fletcher schrieb:
Um native Windows-Anwendungen zu schreiben, habe ich mir einmal den Windows-SDK runtergeladen. Dort ist C++ enthalten (und nur C++); es wird schon einen Grund haben warum das so ist.
Als kleine Anmerkung: Seit ~2007 ist das .NET-Framework Bestandteil des Windows SDKs.
ich meinte aber mysql-root. so gesehen ist es Blödsinn,
weil Du meinst system-root. user-tables überschreiben
hat noch keine Auswirkung ohne Flush. Shade meinte wohl
auch mysql-root.
Immer mit der Ruhe; so unfreundlich war MFKs Antwort auch wieder nicht.
Ich weiß einfach nicht genau, wie dein Gruppen-Schema aussieht, insofern kann ich dir dazu nicht viel sagen.
Aber wenn zB. die Tabelle band_musiker m gruppen_ids mit n musiker_ids verbinden würde, könntest du zB. sowas in der Art machen:
select musiker_name from band_musiker natural join musiker
where gruppen_id in
(select gruppen_id from band_musiker natural join musiker
where musiker_name = 'Angus Young');
Ist jetzt natürlich nicht getestet und ich habe keine Ahnung von eurem DB-Schema, aber damit kannst du dir das dann schon zurechtbasteln.