2016-05-11 16 views
1

Ich versuche, eine neue C# .Net COM + -App für die Kommunikation mit alten VB6-Anwendungen zu erstellen. Bis jetzt habe ich alles funktioniert, ich kann alle Arten von Objekten einschließlich eines ADODB.Recordset zurückgeben.Wie fügen Sie mehrere Zeilen zu einem manuell erstellten ADODB.Recordset in C# hinzu. NET

Allerdings kann ich nur eine Zeile von Daten zu diesem Recordset hinzufügen, und wenn ich versuche, zusätzliche Zeilen hinzuzufügen, wird nur die letzte Zeile tatsächlich an die VB6 App zurückgegeben.

// List of data 
List<string> names = new List<string> { "Fred", "John", "Jane" }; 

// Create ADODB Recordset 
var adors = new ADODB.Recordset(); 
adors.Fields.Append("name", ADODB.DataTypeEnum.adLongVarChar, 250, FieldAttributeEnum.adFldIsNullable); 
adors.Open(System.Reflection.Missing.Value, System.Reflection.Missing.Value, CursorTypeEnum.adOpenDynamic, LockTypeEnum.adLockOptimistic, -1); 

// Loop through data and add a row for each one 
foreach (var name in names) 
{ 
    adors.AddNew(); 
    adors.Fields["name"].Value = name; 
    adors.Update(System.Reflection.Missing.Value, System.Reflection.Missing.Value); 
} 

// Return Recordset 
return adors; 

Für das obige Beispiel mir die VB6 würde Cord zurück mit 1 Reihe von Daten empfangen, die „Jane“ wäre

Könnte jemand bitte erklären, wie man ein ADODB.Recordset mehrere Zeilen hinzufügen in C#?

+0

adors.Fields [ "name"] Value = membership.MemberNumber einzustellen. Sind Sie sicher, dass diese Aussage korrekt ist? Sie weisen dem ADODB-Re-Cord-Set den Name tatsächlich nicht zu. – Thangadurai

+0

@Thangadurai nein das war falsch. Bitte sehen Sie mein letztes Update. Das war ein Teil des echten Codes, der in das Beispiel kam. Ich habe auch eine Antwort auf meine Frage gefunden, die ich hinzugefügt habe. –

Antwort

1

Ein bisschen mehr herumspielen und ich konnte eine Antwort finden. Sie müssen die Record AbsolutePosition bis 1.

// Set recordset back to starting position 
adors.AbsolutePosition = (PositionEnum)1; 

Voll Beispiel unten

// List of data 
List<string> names = new List<string> { "Fred", "John", "Jane" }; 

// Create ADODB Recordset 
var adors = new ADODB.Recordset(); 
adors.Fields.Append("name", ADODB.DataTypeEnum.adLongVarChar, 250, FieldAttributeEnum.adFldIsNullable); 
adors.Open(System.Reflection.Missing.Value, System.Reflection.Missing.Value, CursorTypeEnum.adOpenDynamic, LockTypeEnum.adLockOptimistic, -1); 

// Loop through data and add a row for each one 
foreach (var name in names) 
{ 
    adors.AddNew(); 
    adors.Fields["name"].Value = name; 
    adors.Update(System.Reflection.Missing.Value, System.Reflection.Missing.Value); 
} 

// Set recordset back to starting position 
adors.AbsolutePosition = (PositionEnum)1; 

// Return Recordset 
return adors;