Im Prinzip ist mir das schon klar. Es handelt sich hier nur um mehr als 15000 Tabellen und das ist per Hand relativ mühselig. Ich hatte auf einen Tip für ein fertiges Proggy gehofft. Vielleicht gebe ich mir am WE einen Ruck und programmiere es selber.
Wenn Du das öfter machts, und z.B. wegen der Sortierung auch keinen String haben willst, dann bietet sich eine kleine Funktion, wie diese, an:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER FUNCTION Func.GETDATEPART (@dt DATETIME)
RETURNS DATETIME AS
BEGIN
RETURN CONVERT(datetime, FLOOR(CONVERT(float, @dt)))
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Die Abfrage wäre dann z.B. wie folgt:
Select Func.GETDATEPART(getdate())
Nachdem du den Client installiert hast, müsstest du in der BDE-Verwaltung auf dem Reiter Konfiguration nachsehen. Dort steht unter Treiber->Native ein Eintrag ORACLE. Je nach Oracle-Version heisst der Eintrag vielleicht anderst, aber er steht unter Native, nicht unter ODBC.
Wenn du dann auf dem Reiter Datenbanken "Neu" anwählts, kommt eine Auswahl "Datenbank-Treibername". Dort wählst du ORACLE aus.
Ach ja, damit du dann bei Server-Name die Datenbank auswählen kannst, muss ein Datenbank-Alias angelegt werden. Das geht über das Programm "SQL *Net Easy Configuration" (ich glaub bei neueren Versionen heisst das anderst, evtl. Oracle Installer).
Ich hoffe, das hilft dir ein wenig.
Die Funktion einzurichten ist sehr viel einfacher, als ein bereits vorhandenes DB-Layout zu ändern und dabei vorhandene Daten konvertieren zu müssen.
Aber ich mache es jetzt mit dem Select, das ist schliesslich das, was ich von Anfang an wollte
HI
Also ich hab vor kurzen das Programm GSTOOL 3.1 installiert. Und um das Programm zum laufen zu bringen muss ich einen Datenbank BSIDB_V310 anhängen. Und jetzt zu meinen Problem wenn ich diese Datenbank ausgwählt habe und anhängen will kommt diese Fehlermeldung: [Microsoft][ODBC SQL Server Driver][SQL Server] Für die Datenbank-ID5, Objekt-ID 1, Index-ID 1 konnte keine Zeile in sysindexes gefunden werden. Führen Sie DBCC CHECKTABLE auf 'sysindexes' aus. Und jetzt meine Frage wie kann ich diesen Fehler beheben? Ich hoffe es kann mir irgendjemand helfen.
Kein Wunder bei der Where-Bedingung (zeige alle DS in Table-Berechtigungen an in denen kein MA eingetragen ist oder ein Anderer MA als der gewählte). ?!?
Wenn eine not exists-Abfrage halt nicht geht, dann stell die DB um
Table Berechtigungen
raum_id, responder_id, Berechtigung (JA,NEIN,EIN BISCHEN ...)
Das ergibt dann einen einfachen select
select *
from Berechtigungen
where responbder_id = 'Nummer der Mitarbeiters'
and Berechtigung = 'NEIN' (man könnte auch ein tinyint-> JA/NEIN oder smallint-> Abstufungen nehmen)
OK es geibt mehr DS in Berechtigungen, nämlich genau 1 je MA und Raum aber Du kannst einfach abfragen.
Dann hast Du das Kommando nicht verstanden!
Es ändert nicht die Werte in der DB, sondern die Werte in der Ergebnismenge des Select's. Beim Speichern solltest Du diese Konvertierung dann natürlich auch wieder anders herum durchführen!
Bei mir funktioniert es so:
SQLINTEGER* ptr = (SQLINTEGER*)m_params[idx];
*ptr = SQL_NULL_DATA;
int rc = SQLBindParameter(m_hstmt, parmPos, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, (SQLPOINTER)0, 0, ptr);
man beachte den letzten Parameter, der zeigt auf SQL_NULL_DATA
Hallo zusammen,
ich habe eine DB auf MySQL laufen und möchte die DB jetzt auf Oracle 9 importieren.
Nun habe ich das Problem, dass wenn ich eine Tabelle erstellen möchte das CREATE - Statement nicht ausgeführt wird, da ich AUTO_ICREMENT verwende.
Nach einer kleine Recherche habe ich entdeckt, dass Oracle die Option nicht unterstützt.
Es war ein Bsp. dabei wie man es über Sequence und Trigger lösen kann. Doch auch diese Lösung funktioniert nicht richtig.
Hier mal mein Code:
CREATE SEQUENCE zeitkonflikte_sequence
START WITH 1 INCREMENT BY 1 CACHE 2;
create table zeitkonflikte (
idZeitkonflikte INT NOT,
personalnummer varchar(20) NOT NULL,
datum varchar(12),
PRIMARY KEY (idZeitkonflikte, personalnummer),
FOREIGN KEY (personalnummer) REFERENCES mitarbeiter (personalnummer));
CREATE TRIGGER zeitkonflikte_trigger BEFORE INSERT ON zeitkonflikte
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
Begin
select zeitkonflikte_sequence.nextval into :NEW.idZeitkonflikte from DUAL;
End;
Dieses SQl-Statement gebe ich dann über TOAD ein und das Programm liefert mir folgendes Problem:
Variable :NEW has been declared as an integer and a non-integer value() has been suplied.Please change either the type or value of the Variable
Kann mir einer weiterhelfen und sagen wie ich das Problem gelöst bekomme?
Ich weiß ja, dass sich über Sinn oder Unsinn dieser Methode streiten lässt und mir sind auch andere Möglichkeiten,
wie die von dir Erwähnte, bekannt, um den Mitarbeitern nur Leserechte zu geben, aber das ist nun mal die Vorgabe
und mich würde schon interessieren, ob das darüber möglich ist.
Letztlich werden wir aber vermutlich wirklich einfach nur den Usern auf dem SQL Server Leserechte geben.
Trotzdem Danke für deine Antwort
Bei DTS kann man "andere ODBC Datenquelle" angeben.
Allerdings habe ich hier nur den SQL Server 2000 mit Enterprise Manager. Ich hoffe da gibts beim neues was übertragbares.
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) 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.