Dass Leerzeichen nicht mitgezählt werden hab ich auch schon bemerkt. Also hab ich einen Punkt davor und dahinter gemacht, die Länge gemessen und dann die Länge von den 2 Punkten wieder abgezogen. Nun klappts bei mir :
Ich starte einen Datenimport durch Klick auf einen Button. Den Fortschritt zeige ich mit einer ProgressBar an.
Beim Import wird die ProgressBar durch den Befehl ProgressBar1.Refresh(); aktualisiert.
Wenn ich nun auf das Fenster klicke oder es mal im Hintergrund war wird es nicht mehr aktualisiert und das Fenster bekommt den Zusatz "(Keine Rückmeldung)".
Wie kann ich bewirken, dass die ProgressBar auch nach Mausklicks aktualisiert wird ?
Wie kann ich bewirken dass ich den Vorgang durch Klick auf einen Button abbrechen kann ?
Wenn ich vor dem Import die Dateien leere mit einem SQL-Befehl dann dauert dass eine Weile. Kann ich in dieser Zeit auch was anzeigen bzw. Abbrechen ermöglichen ?
cb.Dispose();
da.SelectCommand.CommandText = "SELECT * FROM "+dat;
cb = new SqlCommandBuilder(da);
Jetzt wird vor jedem Einfügen eines neues Datensatzes der Insert-String neu aufgebaut. Da dies nur im Hauptpeicher stattfindet sollte das auch schnell gehen.
Programmierhans : Da die Routine mit allen Datenbanken funktionieren soll wollte ich die Verwendung von mehreren Datasets und DataAdapters verhindern. Es können über 100 Tabellen gleichzeitig sein die da angesprochen werden.
zuerst einmal finde ich dieses Forum echt Klasse. Ich habe aus den Beiträgen schon viele Ideen schöpfen können.
Nun komme ich nicht weiter, und weder im Forum noch anderswo kann ich eine Lösung dazu finden.
Ich lade aus einer externen Datei mehrere Datensätze, die in verschiedene Tabellen gespeichert werden müssen. Da ich vorher nicht weiss welche Tabelle füge ich mehrere Tabellen dem Dataset hinzu und erzeuge eine Tabellenzeile zu der jeweiligen Tabelle :
conn = new SqlConnection(connStr);
ds = new DataSet();
da = new SqlDataAdapter( sqlstr, conn);
cb = new SqlCommandBuilder(da);
DataRow rw = null;
try
{
conn.Open();
ds.Clear();
da.SelectCommand.CommandText = "SELECT * FROM table1";
ds.Tables.Add("table1");
count = da.Fill(ds,"table1");
da.SelectCommand.CommandText = "SELECT * FROM table2";
//cb.RefreshSchema();
ds.Tables.Add("table2");
count = da.Fill(ds, "table2");
da.SelectCommand.CommandText = "SELECT * FROM table3";
ds.Tables.Add("table3");
count = da.Fill(ds, "table3");
}
catch (Exception ex)
{
}
conn.Close();
while (...)
{
// Datensatzanfang, dat = Name der Tabelle
rw = ds.Tables[dat].NewRow();
// Felder zuordnen
rw[fname1] = str1;
rw[fname2] = str2;
// Datensatz einfügen
ds.Tables[dat].Rows.Add(rw);
try
{
conn.Open();
count = da.Update(ds, dat);
}
catch (Exception ex)
{
MessageBox.Show("Datenbank-Fehler : " + ex.Message);
}
}
Beim Ausführen des da-Update-Befehls bekomme ich die Fehlermeldung DataColumn 'dat3_spalte1' in der DataTable 'table1' für SourceColumn 'dat3_spalte1' ist nicht vorhanden"
Ich habe inzwischen festgestellt, dass es am ComandBuilder liegt, der seien Insert-Befehl nur für eine Tabelle erstellt hat.
Auch Probieren mit cb.RefreshSchema() und Anlegen von mehreren Comandbuildern hat keinen Erfolg gebracht.
An welcher Stelle muss ich denn eigentlich den Commandbuilder erstellen ?
Wie kann ich Commandbuilder für mehrere Tabellen erstellen ? Erkennt er dann welchen Insert-Befehl er benutzen muss ?
Aus der bisher übertragen Datenmenge und der bisher verbrauchten Zeit den Zeitbedarf errechnen. Das ist einfacher Dreisatz. Das Ergebnis wird dann zum Ende hin immer genauer.
Zitat
(wie im WindowsDialog)
Bist Du sicher ? In Windows stimmen die Zeitangaben nie !
Ich habe nun entdeckt, dass bei der Konvertierung von 1.1 nach 2.0 sich die Verzeichnisstruktur ändert und so alte und neue Programmversionen auf dem Webserver zu finden sind. Hab nun alles gelöscht und neu übertragen.
Jetzt kommen dauernd neue Fehlermeldungen.
:-(
Gibt es da eine Patentlösung oder soll ich Version 1.1 wieder installieren ?
vbprogger : Ist ja meine eigene Scriptdatei, also kann ich auch include verwenden.
Hab jetzt alles auf Dot.NET 2.0 umgestellt, jetzt laufen meine Programme nicht mehr.
Ich bekommen die Fehlermeldung :
The type 'Eventkalender.Global' is ambiguous: it could come from assembly 'D:\ftp\partyfotos\bin\Eventkalender.DLL' or from assembly 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\2656e183\8a72f965\App_Code.szenihbf.DLL'. Please specify the assembly explicitly in the type name.
Achja, die Unterschiede zwischen 1.1 und 2.0 kenne ich. Nur nicht die speziellen Unterschiede bei "<form action=...>".
Zwei von meinen Portalen (siehe Signatur) laufen ja schon unter DotNetNuke 4.0.2, also unter ASP.NET 2.0.
in die Datei Test2.aspx geschrieben. Beim Klick auf den Button wird dennoch http://www.partyfotos.de/Test2.aspx aufgerufen.
Wenn man sich den Quelltext ansieht erkennt man, das der Eintrag "Action" verschwunden ist. Dot.Net scheint den zu entfernen.
header.php und footer.php erzeugen das ganze Portal mit Titel und Menü usw.
In Test.aspx soll nun eine Eingabemaske sein.
PHP und ASP.NET liegen z.Zt. auf verschiedenen Rechnern.
Wenn ich nun ein Control wie z.B. Button klicke, dann ruft sich das Formular wieder auf, aber nicht wie gewünscht das Portal, sondern das Formular selbst.