Ging problemlos. Danke!
Das Problem war hier einfach nur optischer Natur. Die ID wird auch außerhalb der DB zur Identifikation des Eintrags genutzt und war eine Stelle zu lang.
eine meiner Anwendungen erzeugt in einer Tabelle regelmäßig neue Einträge wobei jeweils durch Autoincrement eine neue ID erzeugt wird. In der Tabelle sind ca. 2300 Einträge. Die ID lag zuletzt bei 3941 und machte plötzlich einen Sprung auf 13938. Es handelt sich um einen Online-Server und am Code habe ich nichts geändert. Ich weiß zwar nicht was passiert ist, aber wie könnte ich den Wert wieder zurückdrehen z.B. auf 4000 oder so?
Das sieht nicht schlecht aus. Ich habs aber jetzt endlich hin bekommen das Management Studio 2012 zu installieren, das sollte eigentlich erst mal ausreichen.
Danke trotzdem!
Ich hab davon gelesen aber nirgends was zum runterladen gefunden. Ich finde bei Microsoft immer nur das zum 2008er gehörende MMS. Wo bekomme ich das 2012er?
ich melde mich seit langer Zeit mal wieder und habe auch gleich ein ziemlich dämliche, aber für mich sehr wichtige Frage:
Mit welchem Tool erstelle und bearbeite ich am besten Datenbanken auf dem SQL Server 2012?
Ich frage deshalb, da ich mich seit längerem nicht mehr wirklich aktiv mit der Materie auseinandergesetzt habe. Ich habe irgendwann mal eine Datenbank auf einem 2005er SQL Server mit dem Management Studio Express entworfen und damals auf einen Online-Server kopiert. Seit dem waren immer nur minimale Änderungen an den Tabelle nötig, die ich problemlos per Management Studio durchführen konnte. Kürzlich musste ich aber auf eine 2012er DB umsteigen und dazu sind wieder Anpassungen nötig. Als ich in den Entwurfsmodus einer Tabelle gehen wollte, bekam ich aber die Meldung, dass das mit dieser MMS-Version nicht möglich sei. Nach etwas Googeln konnte ich aber keinen wirklich Nachfolger finden. Wie nennt sich da das aktuelle Produkt oder ist das inzwischen nur noch zusammen mit dem Visual Studio zu bekommen?
ich möchte ein Browser-Control nutzen um darin eine Google-Bildsuche zu starten. Jetzt würde ich gerne eines der Bilder auswählbar machen z.B. durch einen Klick. Das Bild soll dann z.B. in einer DB gespeichert werden o.ä. das ist erst mal zweitrangig. Wie könnte ich sowas am einfachsten umsetzen? Oder gibt es eine deutlich simplere Variante ohne Browser?
Hi,
wie ermittelt man prinzipiell den Wert eines Quelltexts, wenn an Stelle der fertigen Software der gesamte QUelltext verkauft werden soll? Was könnte man da als Faustregel zur Berechnung nehmen? Ich benötige überhaupt erstmal einen Grundwert.
@michlG:
Perfekt! So klappts. Ich habs jetzt per Thread umgesetzt und den Backgroundworker komplett rausgeschmissen. Das Problem der Aktualisierung löse ich über ein in die Worker-Klasse eingebautes Event, das ich im Hauptprogramm abonniere. Im Eventhandler Invoke ich die zu verwendeten Elemente des Main-Threads und schwups ... es klappt so wie ich das wollte! Danke noch mal!
@Darth Maim:
Stimmt, ich hatte es zu Anfang auch genau so (ohne zweiten Thread) genau so umgesetzt, da ich auch so dachte. Das Problem ist aber hierbei, dass das Tick-Event selbst zar in einem zweiten Thread läuft, aber der Aufruf des Tick-Events wird trotzdem ausgebremst, wenn das Hauptprogramm beschäftigt ist.
das Problem ist dass deine DoWork Methode lange schon fertig ist bis du das Timer-Tick kriegst und damit dann den Progress festlegen willst
Ja genau. Der BW dient hier quasi nur zum Einstieg in den zweiten Thread. Die Thread-Variante macht wohl wirklich deutlich mehr Sinn. Ich werde mir das mal entsprechend umbauen und mit eigenem Event umsetzen.
Danke!
Bisschen Code zum Verständnis wäre nicht schlecht.
Ok, hier mal zum Verständnis:
class Main
{
BackgroundWorker worker = new BackgroundWorker();
Working_Hard wh_ref;
worker_DoWork()
{
Working_Hard wh = new Working_Hard()
wh_ref = wh;
wh.starte_timer();
}
button1_click()
{
worker.RunWorkerAsync();
}
button2_click()
{
wh_ref.verändere_parameter(parameter);
}
}
class Working_Hard
{
MMTimer timer = new MMTimer();
starte_timer()
{
timer.Start();
}
timer_Tick()
{
//mache was zeitkritisches ...
}
verändere_parameter(parameter)
{
//Parameter ändern, die im Tick-Event verarbeitet werden ...
}
}
Das ist es in groben Zügen. Im Hauptprogramm starte ich den Vorgang per button1, der dann im Hintergrund den Timer startet. Der wiederum wird im Hintergrund regelmäßig durchlaufen über das Tick-Event im zweiten Thread. Ich habe auch die Möglichkeit über meine Referenzklasse wh_ref dem Vorgang auch im Nachhinein noch andere Parameter, die z.B. durch den Benutzer eingegeben wurden, zu verändern.
In meiner Anwendung lasse ich einen MultimediaTimer laufen um sehr zeitgenau und regelmäßig eine Aktion durchführen zu können (der Standard-Timer war hierfür nicht genau genug). Um die Timerausführung auch bei weiteren Aktionen in der GUI auf keinen Fall zu stören, lagere ich die Erzeugung und das Tick-Event über einen Backgroundworker in einen zweiten Thread aus. Das funktioniert soweit auch so wie gedacht.
Und jetzt zum Problem bei der Sache:
Ich muss die Ausführung des TickEvents in der GUI anzeigen. Gemäß [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke) habe ich mir also gedacht, dass das ProgressChanged-Event des BackgroundWorkers genau das ist was ich suche. Leider klappt das nicht. Da ich im Worker die Klasse nur erzeuge, in der dann der MMTimer gestartet wird, bekomme ich beim Aufruf von ProgressChanged im Tick-Event dann die Meldung "Für diesen Vorgang wurde OperationCompleted bereits aufgerufen. Weitere Aufrufe sind unzulässig."
ich habe folgendes Problem. Ich arbeite mit einem BackgroundWorker um darin eine permanent laufende Methode unterzubringen ohne alles zu blockieren. Ich kann dem Worker zwar während des ersten Starts entsprechende Parameter mitgeben, weiß aber nicht wie ich das machen soll während der Worker läuft. Je nach dem was der Benutzer in der GUI so anstellt muss die Methode im Worker teilweise mit anderen Parametern arbeiten. Dazu müsste ich irgendwie dem Worker die Parameter übergeben ohne ihn anzuhalten. Wie stelle ich das am Besten an?
ich möchte Daten in einem GridView per SqlDataSource speichern, so dass die Daten direk tim GridView eingegeben werden können. Im Prinzipg klappt das auch bisher problemlos. Mein aktuelles Problem ist jetzt aber, dass ich u.a. auch ein Passwort in das Grid eingegeben werden sol ich ich dies nicht im Klartext in der DB speichern möchte. Wie kann ich es erreichen, dass das eingegebene Passwort vor der Übergabe an den UpdateCommand noch kurz durch meine Verschlüsselungs-Methode gejagt wird?
Hat sich erledigt. Ich hab die bisherige Web.config einfach noch mal gelöscht und die Seite mal ausgeführt, so dass eine neue web.config angelegt wurde. Jetzt klappts wieder.
ich habe mir letztens leider die Web.config meiner Seite zerschossen und musste sie manuell wieder aus Bruchstücken zusammenstückeln. Leider kann ich seit dem keine AJAX-Elemente mehr ausführen. Schon der ScriptManager gibt verursacht einen Fehler:
Das ScriptManager-Element ist kein bekanntes Element. Ursache hierfür kann ein Kompilierungsfehler in der Website oder das Fehlen der Datei "web.config" sein.
Hier der Inhalt meiner Web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="30720"/>
<!--Upload auf 30 MB begrenzt-->
<sessionState mode="InProc" cookieless="false" timeout="400"/>
<customErrors mode="Off"/>
<pages enableEventValidation="false">
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</controls>
</pages>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
-->
<!--<compilation debug="true" >
<assemblies>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>-->
<compilation debug="true">
<assemblies>
<add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
<!--
-->
<!--<jsonSerialization maxJsonLength="500">
<converters>
<add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
</converters>
</jsonSerialization>-->
<!--
-->
<!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
<!--
-->
<!--
<authenticationService enabled="true" requireSSL = "true|false"/>
-->
<!--
-->
<!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and
writeAccessProperties attributes. -->
<!--
-->
<!--<profileService enabled="true"
readAccessProperties="propertyname1,propertyname2"
writeAccessProperties="propertyname1,propertyname2" />-->
</webServices>
<!--<scriptResourceHandler enableCompression="true" enableCaching="true" />-->
</scripting>
</system.web.extensions>
</configuration>
Wieso wird der ScriptManager nicht mehr erkannt? Was habe ich vergessen? Oder liegt es möglicherweise nicht an der Web.config?
wie könnte ich den HTML-Quelltext aus dem markierten Text eines WebBrowser-Controls bekommen?
Im WebBrowser-Control soll eine Webseite aufgerufen werden, auf der ich anschließend per Maus einen Text bzw. einen kompletten Bereich markiere. Von diesem Bareich möchte ich den Quelltext bekommen per Button_Click.
Den FAQ Auszug kenne ich. sorry, ich hatte mich nicht ganz deutlich geäußert. Nein, MediaPlayer ist eine Framework 4 Klasse. Das Tick-Event wird im MainWindow ausgelöst. Der MediaPlayer-Aufruf findet dann aber in einer eigenen Klasse statt. Dort will der Kompiler dann aber ein Invoke für das MediaPlayer-Objekt. Laut FAQ müsste ich ja Object.Invoke aufrufen, aber wenn ich in meiner Klasse bin, was ist dann Object?
Ich arbeite mit dem MultimediaTimer und rufe im Tick-Event eine Methode einer eigenen Klasse, in der ich die Play-Methode eines MediaPlayer-Objekts aufrufe. Dabei bekomme ich eine Invoke-Fehlermeldung beim MediaPlayer-Aufruf. Wie kann ich hier einen Invoke einbauen?
Das ist eigentlich gar nicht swo sehr das Problem. Die Methode ist im Prinzip nicht blockierend. Ich hatte den Methodenaufruf eigentlich nur aus Verzweiflung in den BackgroundWorker ausgelagert. Mein Hauptproblem ist eigentlich, dass der Timerdurchlauf durch die Oberflächenbehandlung (scrolling) behindert wird. Wie könnte ich das verbessern?
Mir ist jetzt natürlich auch klar, dass lediglich der einzelne Methodenaufruf meiner UserControls in einem separaten Thread durchgeführt wird, allerdings läuft der Timer an sich ja im MainThread. Genau das ist wahrscheinlich hier auch das Problem. Die Timerausführung kann behindert erden, wenn ich die Oberfläche scrolle. Wie könnte ich aber auch die Timerausführung auslagern?
In meiner WPF-Anwendung habe ich ein UserControl erstellt, in dem u.a. über ein SoundPlayer-Objekt ein Wave-Sound abgespielt werden kann. In meinem speziellen Fall kann es vokommen, dass das das Abspielen des Sounds mehrmals hintereinander initiiert werden muss. Dies geschiet nicht über das Control direkt, sondern über eine Methode, die vom ParentWindow aus aufgerufen wird.
Ich ordne in meinem Layout mehrere dieser UserControls in einem StackPanel an. Der aufruf der Soundabspielenden Methode geschiet im MainWindow bereits über einen BackgroundWorker, damit mir verarbeitungstechnisch nicht dazwischen kommt. Das funktioniert an sich auch wunderbar. Wenn ich jetzt aber mein Fenster bzw. im StackPanel scrollen muss (über einen ScrollViewer), dann wird das eigentlich ja in den BackgroundWorker ausgelagerte Soundabspielen unterbrochen. Nach dem Scrollen geht es aber wieder direkt weiter.
Wie kann ich die Verarbeitung der Oberfläche von der restlichen Codeausführung so trennen, dass keine Unterbrechungen entstehen?
Ich führe in einer WPF-Anwednung regelmäßig Aktualierungen durch und möchte diese nicht durchführen, wenn die Anwednung von einem anderen Programm überdeckt wird. Allein die Prüfung, ob die Anwendung den Fokus hat, genügt leider nicht.
Beispiel1:
Die Software liegt auf dem zweiten Bildschirm, hat keinen Fokus (ist aber sichtbar), da auf dem ersten Bildschirm in einem anderen Programm gearbeitet. Hier sollen Aktualisierungen auf dem zweiten Bildschirm stattfinden.
Beispiel2:
Das Gleiche wie in Beispiel1, nur dass das Programm auf dem zweiten Bildschirm von z.B. einem Browser überdeckt wird. Hierbei sollen diesmal keine Aktualisierungen stattfinden, weil das Programm nicht sichtbar ist.
Wie könnten man überprüfen, ob die Anwendung durch ein anderes Fesnter überdeckt wird?
Das Wiederholen bezieht sich im Windows MediaPlayer wohl nur auf die Playlist und nicht auf einzelne Titel. Ich hab aber gerade gesehen, dass es ein Event "MediaEnded" gibt, welches nach Beendigung des aktuellen Titels aufgerufen wird. Darüber sollte sich was machen lassen.