Moin,moin!
Falls Du SQL Server verwendest, kannst Du den Profiler mitlaufen lassen, der Dir dann das verwendete INSERT-Statement ausgibt. Die eckigen Klammern funktionieren auch nur mit MSSQL.
Ansonsten k�nntest Du das INSERT-Statement manuell vorgeben und die Werte mit Parametern einzutragen. Damit wird der zweite DataAdapter, das FillSchema() und der CommandBuilder eingespart. Beim OleDbType mu�t Du in diesem Beispiel statt <whatever> den verwendeten Datentyp eintragen. Die Fragezeichen im Text des Statements bleiben so stehen, die Parameter ersetzen die Fragezeichen in der Reihenfolge des Hinzuf�gens (nur bei OleDb und Odbc).
(tut mir leid, ich hoffe, C# st�rt nicht...)
foreach (DataRow dtRow in objDataSetB1.Tables[0].Rows) {
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = objConnect;
cmd.CommandText = "INSERT INTO Pictures (property, serial, h-path, t-path) VALUES
(?,?,?,?)"; OleDbParameter p = new OleDbParameter("@property", OleDbType.<whatever>);
p.value = dtRow["property"];
cmd.Parameters.Add( p ); p = new OleDbParameter("@serial", OleDbType.<whatever>);
p.value = dtRow["serial"];
cmd.Parameters.Add( p ); p = new OleDbParameter("@h-path", OleDbType.<whatever>);
p.value = dtRow["h-path"];
cmd.Parameters.Add( p ); p = new OleDbParameter("@t-path", OleDbType.<whatever>);
p.value = dtRow["t-path"];
cmd.Parameters.Add( p );cmd.ExecuteNonQuery(); }
Ich hoffe, das hilft weiter?
Viele Gr��e, Helge
[EMAIL PROTECTED] wrote:
Hallo ,
da bin ich wieder mit meinem problemchen, war im urlaub hab deswegen nicht weiter gepostet... Der Fehler der Syntax in der INSERT INTO Anweisung kommt leider immer noch vor, trotz [].
Anbei der aktuelle Code:
Dim objCommand As New OleDbCommand() objCommand.Connection = ALobjConnect objCommand.CommandType = CommandType.Text objCommand.CommandText = "SELECT [property], [serial], [h-path], [t-path] FROM [tbl_photos]" objDataAdapterB1.SelectCommand = objCommand objDataAdapterB1.Fill(objDataSetB1)
Dim objCommand2 As New OleDbCommand() objCommand2.Connection = objConnect objCommand2.CommandType = CommandType.Text objCommand2.CommandText = "SELECT [property], [serial], [h-path], [t-path] FROM [Pictures]" objDataAdapterB2.SelectCommand = objCommand2 objDataAdapterB2.FillSchema(objDataSetB2, SchemaType.Source, "Pict") objDataSetB2.AcceptChanges()
Dim objDataRow, dtRow as DataRow For Each dtRow in objDataSetB1.Tables(0).Rows
objDataRow = objDataSetB2.Tables("Pict").NewRow() objDataRow.ItemArray = dtRow.ItemArray objDataSetB2.Tables("Pict").Rows.Add(objDataRow) Next
Dim objCommandBuilder As New OleDbCommandBuilder(objDataAdapterB2) objDataAdapterB2.InsertCommand = objCommandBuilder.GetInsertCommand()
objDataAdapterB2.Update(objDataSetB2, "Pict")
->> Bei Ausgabe des objDataSetB2 in ein Grid wird alles korrekt angezeigt inkl. Spaltennamen. ->> Wie kann ich denn den Insert Command selbst erstellen und der Updateanweisung zuweisen?
Gr�sse Pat
----- Original Message ----- From: "Helge Lenuweit" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, July 16, 2004 5:00 PM
Subject: Re: [Asp.net] selbsterstelltes dataset als tabelle in datenbank
speichern
Hi Pat,
nur kurz, ich habe die Diskussion von heute nachgelesen. K�nnte es vielleicht sein, da� t-path als Spaltenbezeichnung Probleme macht? Versuch doch mal, im Statement eckige Klammern um die Spaltennamen zu legen (d.h. [t-path]). Dann k�nntest Du noch den CommandBuilder durch die manuelle Bereitstellung eines InsertCommand ersetzen. Falls es dann immer noch nicht tut, schaue ich mir den Code nochmal an. Jetzt zieht mich aber das sch�ne Wetter nach drau�en...
Viele Gr��e, Helge
[EMAIL PROTECTED] wrote:
selbsterstellteHallo zusammen,
gibt es einen Weg ein selbst erstelltes DataSet welches eine
DataTabel innehat per SQL oder anderst in DB zu schreiben. Vielleicht irgendwie per DefaultView oder �hnlichem?
Gr�sse Pat
_______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
_______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
Hallo Patrik,
ich bin mir sicher das "t-path" und "h-path" vorkommen, weil ich mir das dataset per dataview ausgeben lasse. ausserdem weiss ich doch was in meiner db tabelle steht! das korrekte sql statement habe ich probiert, folgender fehler: F�r mindestens einen erforderlichen Parameter wurde kein Wert angegeben. in dieser zeile:
objDataAdapterB1.Fill(objDataSetB1)da ich ja keine kreuztabellen abfrage in diesem sinne mache wundert es mich schon dass er von 2 verschiedenen datasetsderen spalten eigenh�ndig umbenennt. klar heissen diese immer gleich aber das eine DS hat je mit dem anderen nichst zu tun, soweit!
Warum .net hier ein Double Feld vermutet verstehe ich auch nicht, ok es ist der PrimaryKey auf diesem Feld, diesen habe ich jetzt aber mal gel�scht und kam zum gleichen Ergebniss. Also mich verwirrt das doch sehr. Kann ich bei F�llen des DS den Spaltentyp mitgeben?
Gruss Pat
Hallo
Dim objDataRow, dtRow as DataRow
For Each dtRow in objDataSetB1.Tables("Pics").Rows
objDataRow = objDataSetB2.Tables("Pictures").NewRow()
objDataRow("property") = dtRow("property")
objDataRow("serial") = dtRow("serial")
objDataRow("Expr1002") = dtRow("h-path").ToString
objDataRow("Expr1003") = dtRow("t-path").ToString
objDataSetB2.Tables("Pictures").Rows.Add(objDataRow)
Next
Woher bist Du sicher dass in dtRow "t-path" vorkommt?. Es kommt von objDataSetB1.Tables("Pics").Rows und das ist erwiesenermasse so gef�llt: "SELECT * FROM tbl_photos". Warum machst Du hier nicht ein konkreteres SQL ohne *? Da h�ttest Du schon mal etwas eingegrenzt. Die "Expr1002" etc. werden gemacht, wenn mehrere Spalten dieselbe Bezeichnung haben. Beispiel: Ein select �ber zwei Tabellen wo Du von beiden Tabellen die "ID" bekommst. Aus der einen ID macht er dann z.B. Expr1002.
Die Fehlermeldung deutet daraufhin, dass das Feld nicht ein Text-Feld, sondern ein Double ist! Also hinter Expr1002 liegt nicht Dein vermuteter Path, sondern evtl. eine ID????
Ich w�rd noch warten mit "Bug" rufen...
HTH Patrik
..musste dann mal weiter schaun. Wenn du dahinter kommst woran es lag, poste das mal. Ich muss jetzt weg und kann mir das nicht mehr n�her betrachten.
Viele Gr��e Lars
At 14:15 16.07.2004, you wrote:
provider)Hallo Lars,
danke f�r die Antwort. Sorry aber das gibt eben die gleiche Fehlermeldung:
System.FormatException: Die Eingabezeichenfolge hat das falsche Format. at
System.Number.ParseDouble(String s, NumberStyles style, NumberFormatInfo
info) at System.Double.Parse(String s, NumberStyles style, IFormatProvider
provider) at System.Convert.ToDouble(String value, IFormatProvider
at System.String.System.IConvertible.ToDouble(IFormatProvider provider) at System.Convert.ToDouble(Object value) at System.Data.Common.DoubleStorage.Set(Int32 record, Object value) at System.Data.DataColumn.set_Item(Int32 record, Object value)<properties/H_A_101_C_LR_0.jpg> konnte nicht in der Expr1002-Spalte gespeichert werden. Erwarteter Typ: Double.
Ich weiss nicht warum .net aus einem Textfeld ein double machen will!?
Aber der Tipp ist auf jeden Fall was wert, das spart ja ungemein Schreibarbeit.
Gruss Pat
----- Original Message ----- From: "Lars Berner" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, July 16, 2004 2:06 PM Subject: Re: [Asp.net] nochmals dataset und seine t�cken
Hi Pat,
gute Frage, woran das liegt.. Was mir auff�llt: du weist den Wert jedes DataItems mit Bezug auf den Spaltennamen zu. Du k�nntest statt
For Each dtRow in objDataSetB1.Tables("Pics").Rows objDataRow = objDataSetB2.Tables("Pictures").NewRow() objDataRow("property") = dtRow("property") objDataRow("serial") = dtRow("serial") objDataRow("Expr1002") = dtRow("h-path").ToString objDataRow("Expr1003") = dtRow("t-path").ToString objDataSetB2.Tables("Pictures").Rows.Add(objDataRow) Next
mal versuchen, ob folgendes besser klappt:
For Each dtRow in objDataSetB1.Tables("Pics").Rows
objDataRow.ItemArray = dtRow.ItemArray
Next
..w�rde auch eine Menge Code sparen und evtl. etwas zur Performanceverbesserung beisteuern.
Versuchs mal
Viele Gr��e Lars
_______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
---
Eingehende Mail ist zertifiziert virenfrei.
�berpr�ft durch AVG Antivirus System (http://www.grisoft.com/de).
Version: 6.0.720 / Virendatenbank: 476 - Erstellungsdatum: 14.07.2004
www.zoologie-online.de
Lars Berner Stormcrow-Software Postfach: 110123 69071 Heidelberg
---------------------------------------------------------------------------- ----
--- Ausgehende Mail ist zertifiziert virenfrei. \berpr|ft durch AVG Antivirus System (http://www.grisoft.com/de). Version: 6.0.720 / Virendatenbank: 476 - Erstellungsdatum: 14.07.2004
_______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
_______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
