Laden...
S
Benutzerbeschreibung
Unwissen schützt nicht vor Strafe

Forenbeiträge von stups Ingesamt 18 Beiträge

10.04.2012 - 07:20 Uhr

Hallo,

um das zu erledigen, musst du nichts spezielles tun. Dafür ist der Fremdschlüssel selbst verantwortlich. Stichwort: Referentielle Integrität. Siehe
http://msdn.microsoft.com/en-us/library/aa933119%28v=sql.80%29.aspx
oder auch https://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t

Gruß
stupsnose

29.12.2011 - 16:17 Uhr

Bitte beachte auch folgende Seite, die alle Versionsnummern erklärt:

http://sqlserverbuilds.blogspot.com/

26.10.2011 - 11:22 Uhr

Hallo Masterbell,

du solltest dich evtl. trotzdem nochmal mit dem "using"-Befehl auseinandersetzen.

Gruß
stups

17.10.2011 - 22:37 Uhr

Die erste Abfrage funktioniert deshalb nicht, weil zuerst durch die beiden Joins, die beide 1:N von Auftrag "weggehen" eine N*M-Anzahl an Zeilen entstehen. Die Gruppierung/Summierung geht über die bereits nfach vorliegenden Zeilen und bekommt dadurch vielfache Werte. Eine Seite kann nur stimmen, wenn auf der anderen Seite nur 1 Datensatz vorkommt.

11.04.2011 - 15:16 Uhr

Ich schließe mich meinem Vorredner an. Die Virtualisierung einer Datenbank ist in 60% aller Fälle sinnlos, in 50% der Fälle, wo es Sinn machen würde, ist die Konfiguration oftmals vollkommen schwachsinnig.

Bei Fragen wie sie der OP gestellt hat wird klar, dass das nötige Knowhow, um zu entscheiden, ob die Datenbank virtualisiert werden soll und wenn ja, wie, gar nicht vorhanden ist. Und hier im Forum und mit einer so unspezifischen Frage wird man daür auch keine ausreichende Antwort erhalten können.

@OP:
Du solltest darüber nachdenken, ein Beratungsunternehmen, was sich mit der Materie auskennt, euer System mal unter die Lupe nehmen zu lassen.

Gruß
stupsnose

25.03.2011 - 10:56 Uhr

Hallo Nek,

du hast hier einfach mit der Beschränkung von MSAccess zu kämpfen. Access ist keine Datenbank, sondern eine Datei. Wenn du hier 800k Datensätze einfügst, schreibt er sich in seiner Dateiverwaltung einfach tot. Da gibt es nicht viel zu optimieren.

Was du tun kannst:
Indexe deaktivieren, nach dem Insert wieder aktivieren
(sonst fällt mir nichts ein...)

Gruß
stups

08.03.2011 - 17:57 Uhr

Hallo NoLimit,

nachdem jetzt klar ist, was du willst 😃 ist der Trigger die richtige Lösung.

Allerdings!!! (und die 3 Ausrufungszeichen stehen dort extra) solltest du dir UNBEDINGT Gedanken über das Datenmodell machen. Das was du tust, scheint mir eigentlich nicht sinnvoll zu sein.

Vllt. wäre das was für dich:
Eine Tabelle Buchungen/xyz, in die jeder seine Zahl einträgt, immer in eine neue Zeile.
Dann kannst du entweder per select sum(zahl) from Buchungen immer die Gesamtsumme abfragen, oder ebenfalls mit einem Trigger oder einer zeitgesteuerten Lösung die Summe in deiner anderen Tabelle aktualisieren.

Bei deiner Lösung hast du das Problem, löscht mal jemand den Datensatz, oder macht sonstigen "Quatsch", ist dein vorher zuletzt gespeicherter Wert WEG. Und du fängst wieder bei 0 oder sonstwo an...

Gruß
stups

08.03.2011 - 12:17 Uhr

Hallo,

ein Udpate-Trigger bringt hier meines Erachtens nicht das Ergebnis. Es sei denn, ich habe die Aufgabe noch immer nicht verstanden. Daher schreibe ich das jetzt mal hier nach aktuellem Wissensstand:

Du hast eine Tabelle mit einer Zeile. In dieser Zeile gibt es einen Zahlenwert. Dieser gibt immer die gerade aktuelle Summe von irgendetwas an. Du willst von der/einer/den Clientapplikationen immer die Summe aus dieser Zeile auslesen und ab und zu auch verändern. Dabei willst du nicht die Summe in der Clientapplikation ausrechnen, sondern am Server. Richtig?

Dann lautet die Lösung: Es geht mit einem einfachen SQL-Statement:

UPDATE Tabelle SET Summe = Summe + @NeuerWert (evtl. WHERE ...)

Wenn du die Summe nach dem ausführen deines Statement auch wieder auslesen willst, packst du das ganze in eine Transaktion und führst direkt nach dem Update ein passendes Select aus (in der Transaktion).

Sollte ich die Aufgabenstellung falsch verstanden haben, korrigiere diese doch bitte mal so, dass sie deiner Aufgabe entspricht. Danke!

Gruß
stups

08.03.2011 - 12:11 Uhr

Bitte poste doch mal folgende Daten:

Serverversion
Clientversion auf der Service-Maschine
Sortierungs-Einstellung der Datenbank und der betreffenden Spalte
den Connection-String (Passwort bitte nicht...)

Danke!

07.03.2011 - 15:41 Uhr

Die Frage klingt leicht strange... getdate gibt das aktuelle Datum zurück. Für eine Addition brauchst du mindestens (außer dem Wert der schon in der Tabelle ist) einen weiteren Wert. Den musst du dem Server schon irgendwie mitteilen.

Des weiteren gibt getdate() einen Wert zurück, einen Wert zu aktualisieren ist eine völlig andere Tätigkeit.

Bitte beschreibe doch einmal etwas genauer, was du eigentlcih wissen willst. Danke!

07.03.2011 - 15:38 Uhr

Hallo Mike,

das ist nicth das normale Verhalten bei einer SQL-Verbindung. Infolgedessen solltest du/müssen wir uns Gedanken darüber machen, was in deiner Umgebung speziell ist. Bitte gib uns mehr Informationen über:

Die verwendete SQL-Server-Version
Die installierte SQL-Client-Version
Die Version der Laufzeitumgebung (.NET)
Besondere Zeichensätze an der SQL-Datenbank
installierte Locales an deinem Client-PC

etc.

Danke!

05.10.2010 - 14:51 Uhr

Hallo Wolfgang,

am einfachsten ist es, wenn du dir angewöhnst mit "using" zu arbeiten, am Ende des Blocks iwrd die Connection disposed und (je nach Treiber, bei MSSQL, odbc, oledb) auch geschlossen bzw. an den Pool zurückgegeben.

Gruß
Stefan

30.09.2010 - 09:38 Uhr

Hallo Michael,

die IP muss vom Port mit Doppelpunkt abgetrennt werden, nicht mit Komma:

192.168.1.1:1234

Hast du es damit schonmal versucht?

Gruß
Stefan

13.09.2010 - 20:07 Uhr

Hallo,

das macht schon Sinn.

"select * from x where Spalte= @Parameter"
ist die Syntax für einen Parameter.

"...=@Parameter*" -> bin nicht sicher, denke, der Parameter heißt dann "Parameter*", jedenfalls kann der Parser das nicht so parsen, wie du es gern hättest.

"...=@Parameter + '*'" macht für den Parser erkennbar, dass es sich um einen Parameter handelt.

Mein Favorit:
"select * from x where Spalte= @Parameter"
command.Parameters.Add("@Parameter", OleDbType.VarWChar, 50);
command.Parameters["@Parameter"].Value = Wert + "*";

Gruß
stupsnose

13.08.2010 - 16:32 Uhr

Hallo snowman,

du kannst mit .Innertext auch den gleichen Wert beschreiben, den du mit .Innertext ausliest.

Gruß
Stefan

13.08.2010 - 12:50 Uhr

Hallo,

du solltest auf jeden Fall überlegen, ob das, was du vorhast, so sinnvoll ist.

Array klingt nach Datenbank -> vllt. ist ein embedded-DB-System das richtige?

Wenn du dein Array tatsächlich als Text eines Knotens speichern willst, solltest du einfach Dimension für Dimension mit Trennzeichen in einen String packen und beim Laden genauso wieder parsen.

Es klingt wie es ist, diese Lösung scheint mir nicht die bestmögliche zu sein. Eventuell kannst du uns mehr Info zu deiner Augabe/Ziel geben, so dass man eine bessere Lösung vorschlagen kann.

Gruß
Stefan

12.07.2010 - 09:05 Uhr

Hallo,

falls du die Möglichkeit hast auf 2008 zu updaten, dort kannst du cast(datetimespalte as date) machen um den datumspart zu bekommen.

Gruß
stups

08.06.2010 - 07:12 Uhr

Versuch es einfach mit "DATEINAMEN". Mit vorstehendem / oder // fängst du wieder in der obersten Ebene mit der Suche an, ohne Anker gehts vom aktuellen "Standort" los.

Gruß
Stups