MS SQL gespeicherte Prozedur Array while loop schleife

08. Februar 2010

Ich hatte das vergnügen ein wenig mit den „gespeicherten Prozeduren“ vom MS Sql-Server zu spielen ;)

Hier mal ein Beispiel Scenario:
Aufgabe war es aus einem Text mit Simicolon getrennten Werten, jeden einzelt in eine Tabelle zu schreiben.

Also als eingangs Parameter haben wir die Variable @temp_ID

@temp_ID hat den Wert: 1423,5895,4578,2248

Gelöst habe ich das so:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[sp_test_insert]
	-- Add the parameters for the stored procedure here
	@temp_ID varchar(8000)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    	-- Insert statements for procedure here   
 
	DECLARE @ID varchar(10), @Pos int
 
	SET @temp_ID = LTRIM(RTRIM(@temp_ID))+ ','
	SET @Pos = CHARINDEX(',', @ temp_ID, 1)
 
	IF REPLACE(@temp_ID, ',', '') <> ''
	BEGIN
	    WHILE @Pos > 0
	    BEGIN
                SET @ID = LTRIM(RTRIM(LEFT(@temp_ID, @Pos - 1)))
 
		IF @ID <> ''
		BEGIN
		    INSERT INTO Table1 ([ID]) VALUES (@ID)
 
		END -- IF @ID <> ''
 
		SET @ temp_ID = RIGHT(@temp_ID, LEN(@temp_ID) - @Pos)
		SET @Pos = CHARINDEX(',', @ temp_ID, 1)
 
	    END -- WHILE @Pos > 0
 
	END	-- IF REPLACE(@temp_ID, ',', '') <> ''
 
END

Office Word 2007 und die Einfg Taste

21. Januar 2010

Da hat Microsoft mal wieder ein bisschen geändert.

Die Einfg-Taste funktioniert in Word 2007 Standardmäßig nicht mehr.
Man muss sie erst in den Optionen von Word wieder einstellen.

  1. Also man geht in Word 2007 oben links auf das Office-Zeichen.
  2. Als nächstes geht man auf Word-Optionen.
  3. Hier wählt man jetzt „Erweitert“
  4. Und unter dem Bereich „Bearbeitungsoptionen“ (ganz oben) findet man
    dann den Punkt „EINFG-Taste zum Steuern des Überschreibmodus verwenden“
    und „Überschreibmodus verwenden“
  5. Diese beiden Punkte anhaken.
  6. Und jetzt geht auch das Überschreiben wieder. 

Das Problem jetzt ist nur noch das man nicht sieht ob man die Überschreib-Funktion aktiviert hat.
Jetzt kann man sich das aber in der Statusleiste noch einblenden lassen.

  1. Rechtsklick auf die Statusleiste
  2. Auf den Punkt „Überscheiben“ klicken
  3. Jetzt wird unten eingeblendet ob man Überschreiben oder Einfügen an hat.

BO mal eine kleine Formel

20. Januar 2010
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ifthenelse(cast(word(PARA_TXT, 2),'varchar(16)')<>'D', ifthenelse(index(cast(word(PARA_TXT, 2),'varchar(16)'),'0',0) is NULL, 
ifthenelse(index(cast(word(PARA_TXT, 2),'varchar(16)'),'EUR',0) is NULL, 
ltrim_blanks(replace_substr(replace_substr(cast(word(PARA_TXT, 2),'varchar(16)'), 'FT', ''), 'TF', ''))||' ', ''), ''), '')||
ifthenelse(cast(word(PARA_TXT, 3),'varchar(16)')<>'D', ifthenelse(index(cast(word(PARA_TXT, 3),'varchar(16)'),'0',0) is NULL, 
ifthenelse(index(cast(word(PARA_TXT, 3),'varchar(16)'),'EUR',0) is NULL, 
ltrim_blanks(replace_substr(replace_substr(cast(word(PARA_TXT, 3),'varchar(16)'), 'FT', ''), 'TF', ''))||' ', ''), ''), '')||
ifthenelse(cast(word(PARA_TXT, 4),'varchar(16)')<>'D', ifthenelse(index(cast(word(PARA_TXT, 4),'varchar(16)'),'0',0) is NULL, 
ifthenelse(index(cast(word(PARA_TXT, 4),'varchar(16)'),'EUR',0) is NULL, 
ltrim_blanks(replace_substr(replace_substr(cast(word(PARA_TXT, 4),'varchar(16)'), 'FT', ''), 'TF', ''))||' ', ''), ''), '')||
ifthenelse(cast(word(PARA_TXT, 5),'varchar(16)')<>'D', ifthenelse(index(cast(word(PARA_TXT, 5),'varchar(16)'),'0',0) is NULL, 
ifthenelse(index(cast(word(PARA_TXT, 5),'varchar(16)'),'EUR',0) is NULL, 
ltrim_blanks(replace_substr(replace_substr(cast(word(PARA_TXT, 5),'varchar(16)'), 'FT', ''), 'TF', ''))||' ', ''), ''), '')||
ifthenelse(cast(word(PARA_TXT, 6),'varchar(16)')<>'D', ifthenelse(index(cast(word(PARA_TXT, 6),'varchar(16)'),'0',0) is NULL, 
ifthenelse(index(cast(word(PARA_TXT, 6),'varchar(16)'),'EUR',0) is NULL, 
ltrim_blanks(replace_substr(replace_substr(cast(word(PARA_TXT, 6),'varchar(16)'), 'FT', ''), 'TF', ''))||' ', ''), ''), '')||
ifthenelse(cast(word(PARA_TXT, 7),'varchar(16)')<>'D', ifthenelse(index(cast(word(PARA_TXT, 7),'varchar(16)'),'0',0) is NULL, 
ifthenelse(index(cast(word(PARA_TXT, 7),'varchar(16)'),'EUR',0) is NULL, 
ltrim_blanks(replace_substr(replace_substr(cast(word(PARA_TXT, 7),'varchar(16)'), 'FT', ''), 'TF', ''))||' ', ''), ''), '')

So macht es doch spaß Daten aus anderen System zu holen.
Wenn die die Daten schon schön falsch abspeichern *Argh*

Excel 2007 Masken funktion

14. Januar 2010

Bei Excel 2003 gab es unter Daten den Punkt Masken den findet man bei Excel 2007 nicht so.

Man muss sie erst Manuel zur Leiste hinzufügen
Excel-Optionen | Anpassen | Alle Befehle | Maske | hinzufügen

oder man ruft sie mit der Tastenkombination

Alt + N + M

auf.

Windows 7 Business Objects Webi AD Login/Anmeldung

24. November 2009

Ich habe ja meinen PC jetzt auf Windows 7 umgestellt. Und eigentlich geht auch alles wunderbar kann mich eigentlich nicht beklagen.
Nur die Business Objects Programm wollten sich nicht so ganz fügen.

Man konnte sich zwar noch anmelden aber nicht mehr über die AD-Authentifizierung :(

Dann kam immer im WEBI immer die Meldung: Es wird kein Central Management Server ausgeführt

Was mir natürlich nichts gebracht hat.

Aber das konnte ich ja nicht auf mir sitzen lassen und habe mal eine wenig gesucht konnte aber im Internet so nichts über das Thema finden.
Also habe ich einfach mal einen anderen Weg eingeschlagen.

Da ich schon mal was davon gelesen habe das Microsoft bei Windows 7 die Kerberos Verschlüsslung geändert hat habe ich ein wenig in die Richtung gesucht.
Und bin auch fündig geworden.

Es sieht so aus das Windows 7 nur noch die neuen Verschlüsslungen benutzt also AES oder RC4 aber nicht mehr das alte DES.

Das Problem ist das Business Objects Webi nur die DES Verschlüsslung benutzt und es deswegen zu einer Abweisung des Login kommt.

Aber hier die Lösung:

Lies den Rest des Artikels »

Windows 7 Event 11327

19. November 2009

Ich habe seit heute Windows 7 im Einsatz und wollte mal ein wenig Software installieren.

Und hatte meine Dokumente auf eine Netzlaufwerk umgemappt was bei so machen Installationen eine Fehlermeldung auslöste.

Z.B.
Produkt: Adobe Reader 9.1 – Deutsch — Fehler 1327. Ungültiges Laufwerk: H:\

1
2
3
4
5
6
7
8
9
10
System 
  - Provider
   [ Name]  MsiInstaller 
  - EventID 11327 
   [ Qualifiers]  0 
   Level 2 
   Task 0 
   Keywords 0x80000000000000 
   EventRecordID 2641 
   Channel Application

Und schon habe ich mich nach meinem WinXP gesehnt ;)

Aber ich habe ja einen klugen Admin (Denis) bei mir in der nähe und der hat das Problem lösen können :)

Lösung:

Es liegt daran das die Installationen im Admin-Modus aufgerufen werden und das Laufwerk H:\ für den Admin nicht gemappt ist.

1
2
3
Also ruft man eine CMD im Admin-Modus auf und mappt das Laufwerk 
 
Net Use H: Pfad

und schupps geht’s. :)

Somit kann ich doch noch ein wenig bei Win7 bleiben XD

UPDATE
UPDATE

1
2
3
4
5
Wenn man einfach einen UNC-Pfad einträgt,
anstatt eines Netzlaufwerk klapp das noch viel besser.
 
Und wer ist drauf gekommen?? 
Natürlich der Denis :)

Excel VBA Auslesen eines kompletten Recordsets (CopyFromRecordset)

11. November 2009

was es nicht alles für schöne Funktionen in Excel gibt und ich kannte sie nicht :(

Ich habe immer mühsam meine Recordset mit einer Schleife ausgelesen was natürlich immer ewig gedauert hat.
Kommt natürlich auf die Menge der Datensätze an.

Aber es gib in Excel die Funktion CopyFromRecordset die ein Recordset mit einmal in Excel schreibt.

1
2
3
4
5
For iCols = 0 To .Fields.Count - 1
  Cells(1, iCols + 1).Value = .Fields(iCols).Name
Next
Range(Cells(1, 1), Cells(1, .Fields.Count)).Font.Bold = True
Range("A2").CopyFromRecordset rst

Und dann dauert es nur noch ein paar Sekunden und schupps sind die Daten da :)

VB.NET Textdatei mit ANSI formatierung erstellen

10. November 2009

Falls man es nicht weiss also ich wusste es nicht aber VB.NET schreibt die Textfiles Standard mäßig mit UTF-8.
Also zumindest die Funktionen WriteAllText und StreamWriter.
Was zu einem großen Verhängnis werden kann.

Wir arbeiten in unserer Firma mit dem SUPER TOLLEN Futura. Bei diesem SUPER TOLLEN Programm kann man automatisch Wareneingänge einlesen.
Das Problem nur, wenn die Textfiles zum einlesen eine UTF-8 Formatierung haben, kann Futura sie nicht einlesen.
Als nächstes kommt hinzu das Futura deswegen keine Fehler auswirft, sondern einfach sagt Textdatei ohne Probleme eingelesen und die Datei enthielt keine Daten.
Wie ich es liebe!!!

Ich habe mit den tollen Tools wie PFEdit (In dem Programm sieht man den BOM einer Datei) und PSPad (Mit dem Programm kann man die Formatierung umstellen) dann herausgefunden woran es liegt.
Und jetzt kommt nur noch das Problem VB.NET zusagen das er die Textdatei doch bitte in ANSI schreiben soll.

Aber ich habe es hinbekommen :)

Lösung:

Lies den Rest des Artikels »

Excel Suchen/Ersetzen von *

30. September 2009

Man kann einen * ersetzen in dem man eine Tilde davor macht.

Also:

~*

Und schon gehts ;) War doch wohl logisch oder etwa nicht ^^

Welche Berechtigungen braucht man für WMI?

27. August 2009

Diese Frage hat mich viel Zeit gekostet bis ich sie endlich raus gefunden habe. Man möchte nicht gleich einen lokalen admin anlegen nur damit man Daten per WMI abfragen kann. Zumindest wollte ich das nicht und habe versucht herauszufinden welche Berechtigungen man braucht.
War aber leider gar nicht so einfach ich habe schon oft deswegen im Internet gesucht aber immer nichts gefunden. Und selbst den Benutzer für WMI in jede Klasse setzten und gucke ob es dann geht war mir auch zu anstrengend, weil es ja auch sein könnte das ich noch mehr einstellen muss oder die anderen Einstellungen nicht stimmen.

Doch heute habe ich mal wieder nach diesem Thema gesucht und endlich die Berechtigungen gefunden irgendwo tief in Foren war es versteckt ;)

Dann jetzt zu den Einstellungen:

    Gruppe in die der User eingetragen werden muss:
    Distributed COM Users

    oder

    Administrators
    Rechte auf den WMI-Bereich müssen auch gesetzt werden:
    (Unter Verwalten -> Dienste und Anwendungen -> WMI-Steuerung -> Rechts klick auf WMI-Steuerung -> Eigenschaften -> Reiter (Sicherheit) -> Bereich (Standard: CIMV2) anklicken -> dann Sicherheit anklicken (unten rechts) -> Benutzer hinzufügen)
    Folgende Berechtigungen müssen gesetzt werden:

    Konto aktivieren

    Remoteaktivierung