select table_name from INFORMATION_SCHEMA.TABLES where TABLE_NAME not in ( select distinct table_name from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE = 'PRIMARY KEY ' ) and TABLE_TYPE = 'BASE TABLE'
Donnerstag, 24. Juni 2010
Auflistung aller Tabellen ohne PrimaryKey
Für MS-Sql-Server:
Freitag, 30. April 2010
Kommentare eines Word-Dokumentes als Liste erstellen
Mein aktuelles Problem: In einem recht großen Word-Dokument möchte ich alle Kommentarte überarbeiten.
Die aufkommende Fragestellung: Kann ich alle Kommentare eines Word-Dokumentes als Liste erstellen?
Eine kurze suche brachte mich zu http://word.tips.net/Pages/T001046_Printing_Comments.html. Das Ergebnis ist schon ganz brauchbar:
Vielleicht finde ich demnächst die Zeit das ganze etwas schöner zu gestalten.
Die aufkommende Fragestellung: Kann ich alle Kommentare eines Word-Dokumentes als Liste erstellen?
Eine kurze suche brachte mich zu http://word.tips.net/Pages/T001046_Printing_Comments.html. Das Ergebnis ist schon ganz brauchbar:
Sub KommentarlisteInNeuemDokument()
'
' KommentarlisteInNeuemDokument Makro
' Erstellt eine Liste aller Kommentare des aktuellen Dokumentes in ein neues Dokument.
'
Dim oThisDoc As Document
Dim oThatDoc As Document
Dim c As Comment
Dim sTemp As String
Dim iPage As Integer
Set oThisDoc = ActiveDocument
Set oThatDoc = Documents.Add
Application.ScreenUpdating = False
For Each c In oThisDoc.Comments
'Find page number of comment
oThisDoc.Select
c.Reference.Select
iPage = Selection.Information(wdActiveEndAdjustedPageNumber)
'Put info in new document
oThatDoc.Select
Selection.EndKey Unit:=wdStory
sTemp = "Seite: " & iPage
Selection.TypeText Text:=sTemp
Selection.TypeParagraph
sTemp = "[" & c.Initial & c.Index & "] " & c.Range
Selection.TypeText Text:=sTemp
Selection.TypeParagraph
Next
Application.ScreenUpdating = True
End Sub
Vielleicht finde ich demnächst die Zeit das ganze etwas schöner zu gestalten.
Mittwoch, 31. März 2010
Nachträglich OnDelete: Cascade im EF-Modell ?
Ich hatte gerade auf einer bestehenden DB-Relation die "on update: Cascade" gesetzt, und daraufhin mein EF-Modell ge-updated.
Ein Blick in das edmx zeigte auch den erwarteten Eintrag im SSDL:
Leider stellte sich die Gewünschte Funktionalität nicht ein: "A relationship is being added or deleted from an AssociationSet 'FK_foo_bar'. With cardinality constraints, a corresponding 'bar' must also be added or deleted."
Nach reichlich Ärger und ein wenig googeln war der Fehler schnell gefunden: das CSDL wird nicht automatisch mit angepasst.
Nachdem also im CSDL-Teil der edmx folgendes manuell ergänzt wurde:
Funktioniert auch das Löschen mit onDelete:cscade
Bleibt nur zu hoffen, dass sich die update-Funktionen des Designers im EF4 deutlich verbessert...
Ein Blick in das edmx zeigte auch den erwarteten Eintrag im SSDL:
<Association Name="FK_Foo_Bar"> <End Role="Bar" Type="FooBarModel.Store.Bar" Multiplicity="1"> <OnDelete Action="Cascade" /> </End> <End Role="Foo" Type="FooBarModel.Store.Foo" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="Bar"> <PropertyRef Name="ID" /> </Principal> <Dependent Role="Foo"> <PropertyRef Name="BarId" /> </Dependent> </ReferentialConstraint> </Association>
Leider stellte sich die Gewünschte Funktionalität nicht ein: "A relationship is being added or deleted from an AssociationSet 'FK_foo_bar'. With cardinality constraints, a corresponding 'bar' must also be added or deleted."
Nach reichlich Ärger und ein wenig googeln war der Fehler schnell gefunden: das CSDL wird nicht automatisch mit angepasst.
Nachdem also im CSDL-Teil der edmx folgendes manuell ergänzt wurde:
<Association Name="FK_Foo_Bar"> <End Role="Bar" Type="FooBarModel.Bar" Multiplicity="1"> <OnDelete Action="Cascade" /> </End> <End Role="Foo" Type="FooBarModel.Foo" Multiplicity="*" /> </Association>
Funktioniert auch das Löschen mit onDelete:cscade
Bleibt nur zu hoffen, dass sich die update-Funktionen des Designers im EF4 deutlich verbessert...
Montag, 22. März 2010
Geekfaktor…
Bei Julie Lerman habe ich gerade gelesen, dass man seinen Geekfaktor messen lassen kann – das musste ich natürlich ausprobieren:
Donnerstag, 11. März 2010
Neo-Layout und Geschwindigkeit zum Zweiten.
Über das neo-Layout hatte ich ja bereits berichtet.
Ich bin mit meiner Geschwindigkeit immer noch nicht viel weiter...
26 Wörter
Ich bin mit meiner Geschwindigkeit immer noch nicht viel weiter...
26 Wörter
Problematisch ist an dem Ganzen, dass ich beim Arbeiten nicht "einfach" auf neo umstellen kann. (Man stelle sich einen Mitarbeiter vor, der nichts ahnend an meinen Rechner geht und etwas tippen will...)
Somit arbeite ich die meiste Zeit des Tages mit QWERTZ, bei längeren Texten schalte ich "heimlich" auf neo um (NeoVars sei Dank)...
Montag, 9. November 2009
NUnit im STA - Modus
Neulich hatte ich die Anforderung, dass ein Programm Daten der Zwischenablage nutzen und modifizieren sollte. Ich habe (natürlich) angefangen einen Test zu schreiben. Leider war dies mit dem Unit-Test-Tool meiner Wahl (NUnit) nicht möglich. Der Fehler:
Die Lösung des Problems: NUnit-Tests im Single-Threaded Apartment (STA) statt in der Vorgabe (Multithreaded Apartment (MTA)) laufen lassen. Das Vorgehen: Man erstellt eine einfache app.config mit folgendem Inhalt:
Die Lösung habe ich von hier.
System.Threading.ThreadStateException: Der aktuelle Thread muss in den STA-Modus (Singlethreadapartment) gesetzt werden, bevor OLE-Aufrufe durchgeführt werden können.Der Fehler tritt im Übrigen auch auf, wenn man versucht UserControls zu testen und sollte für WPF und WinForms gleich sein.
Die Lösung des Problems: NUnit-Tests im Single-Threaded Apartment (STA) statt in der Vorgabe (Multithreaded Apartment (MTA)) laufen lassen. Das Vorgehen: Man erstellt eine einfache app.config mit folgendem Inhalt:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="NUnit">
<section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<!-- Valid values are STA,MTA. Others ignored. -->
<add key="ApartmentState" value="STA" />
<!-- See ThreadPriority enum for other valid values -->
<add key="ThreadPriority" value="Normal" />
</TestRunner>
</NUnit>
</configuration>
Damit läuft NUnit im STA, und die es kann auf die Zwischenablage zugegriffen werden.Die Lösung habe ich von hier.
Dienstag, 3. November 2009
ReportPropertyChanged vs. OnPropertyChanged in Entities
Gerade etwas länger mit folgender Fehlermeldung gerungen: System.ArgumentException: Die Eigenschaft 'Foo' weist keine gültige Entitätszuordnung für das Entitätsobjekt auf. Weitere Informationen finden Sie in der Dokumentation zu Entity Framework.
Der Fehler trat immer auf, wenn ich Foo einen wert zuweisen wollte.
Ursache des Fehlers war, das ich meinem eigenen Post über Zusammengesetzte Properties nicht gefolgt war, sondern statt dessen auf diversen Settern noch ReportPropertyChanged("Foo") programmiert hatte.
ReportPropertyChanged ist abernicht das gleiche wie OnPropertyChanged. ReportPropertyChanged scheint noch mehr zu tun und funktioniert daher nur auf Properties aus Enities mit Entitätszuordnung.
Nachdem ich den Fehler gefunden hatte machte die Fehlermeldung auf einmal auch viel mehr sinn.
Die Lösung des Problems war also einfach nicht ReportPropertyChanged zu benutzen, sondern OnPropertyChanged.
(Und bei dieser gelegenheit noch einmal mein Vorgehen in diesem Fall zu überdenken, und mich etwas mehr an meine eigenen Posts halten.)
Der Fehler trat immer auf, wenn ich Foo einen wert zuweisen wollte.
Ursache des Fehlers war, das ich meinem eigenen Post über Zusammengesetzte Properties nicht gefolgt war, sondern statt dessen auf diversen Settern noch ReportPropertyChanged("Foo") programmiert hatte.
ReportPropertyChanged ist abernicht das gleiche wie OnPropertyChanged. ReportPropertyChanged scheint noch mehr zu tun und funktioniert daher nur auf Properties aus Enities mit Entitätszuordnung.
Nachdem ich den Fehler gefunden hatte machte die Fehlermeldung auf einmal auch viel mehr sinn.
Die Lösung des Problems war also einfach nicht ReportPropertyChanged zu benutzen, sondern OnPropertyChanged.
(Und bei dieser gelegenheit noch einmal mein Vorgehen in diesem Fall zu überdenken, und mich etwas mehr an meine eigenen Posts halten.)
Abonnieren
Kommentare (Atom)
