|  |  | |
|  |  | 
| 
 | |||||||
| Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren | 
| Programmierung Rat & Tat für Programmierer | 
|  | 
|  | Themen-Optionen | Ansicht | 
|  20.07.2004, 11:51 | #11 | 
| Master  Registriert seit: 17.09.2001 Alter: 49 
					Beiträge: 563
				 |   den Datentyp damit ich die Tabelle komplett definiert habe Feldname Format Beschreibung | 
|   |   | 
|  20.07.2004, 11:59 | #12 | 
| Master  Registriert seit: 22.03.2000 Alter: 66 
					Beiträge: 550
				 |   Der Typ kann bereits bei der Erstellung mit CreateField festgelegt werden.  Wenn das Feld mit Append zu Auflistung hinzugefügt wurde, ist die Type-Eigenschaft schreibgeschützt. mfg WB | 
|   |   | 
|  20.07.2004, 12:07 | #13 | 
| Master  Registriert seit: 17.09.2001 Alter: 49 
					Beiträge: 563
				 |   genau dieses Problem - schreibgeschützt nun ist guter Rat teuer mein Code Do Until rs.EOF Set fld = tbl.CreateField(rs.Fields(0), dbText, 255) tbl.Fields.Append fld rs.MoveNext Loop db.TableDefs.Append tbl rs.MoveFirst Set tbl = db.TableDefs("neue Felder") Do Until rs.EOF Set fld = tbl.Fields(rs.AbsolutePosition) If Not IsNull(rs.Fields(1)) Then fld.Properties.Append fld.CreateProperty("Description", dbText, rs.Fields(1)) End If rs.MoveNext Loop Do Until rs.EOF Set fld = tbl.Fields(rs.AbsolutePosition) If Not IsNull(rs.Fields(1)) Then fld.Properties.Append fld.CreateProperty("Felddatentyp", dbText, rs.Fields(2)) End If rs.MoveNext Loop rs.Close Set db = Nothing End Sub die 2. Schleife kann ich mir sparen denn ab der 1. Schleife das neue Feld einen Schreibschutz | 
|   |   | 
|  20.07.2004, 12:25 | #14 | 
| Master  Registriert seit: 22.03.2000 Alter: 66 
					Beiträge: 550
				 |   Wie ich schon sagte: Der Typ kann bereits bei der Erstellung mit CreateField festgelegt werden. Oder du änderst den Typ bevor das Feld zu Auflistung hinzugefügt wird. mfg WB | 
|   |   | 
|  20.07.2004, 15:17 | #15 | 
| Master  Registriert seit: 17.09.2001 Alter: 49 
					Beiträge: 563
				 |   so nun hats geklappt für die's interessiert Private Sub StartImport(FileName As String) Dim db As DAO.Database Dim tbl As DAO.TableDef Dim fld As DAO.Field Dim rs As DAO.Recordset Dim Format As Byte Set db = CurrentDb Set rs = db.OpenRecordset("Felder für RC-Plant", dbOpenDynaset) 'zuerst die neuen Felder inkl. Beschreibung nach Access importieren - Felder für RC-Plant Set tbl = db.CreateTableDef("neue Felder für RC-Plant") 'in der Datenbank sind die neuen Feldnamen inkl. Beschreibungen enthalten und können dann 'mittels kopieren einfügen direkt in die Tabelle Element übernommen werden Do Until rs.EOF Select Case rs.Fields(2) Case "Text" Format = 10 Case "Zahl" Format = 3 Case "Ja/Nein" Format = 1 Case Else Format = 10 End Select Set fld = tbl.CreateField(rs.Fields(0), Format) tbl.Fields.Append fld rs.MoveNext Loop db.TableDefs.Append tbl rs.MoveFirst Set tbl = db.TableDefs("neue Felder") Do Until rs.EOF Set fld = tbl.Fields(rs.AbsolutePosition) If Not IsNull(rs.Fields(1)) Then fld.Properties.Append fld.CreateProperty("Description", dbText, rs.Fields(1)) End If rs.MoveNext Loop 'Do Until rs.EOF ' Set fld = tbl.Fields(rs.AbsolutePosition) ' If Not IsNull(rs.Fields(1)) Then ' fld.Properties.Append fld.CreateProperty("Format", dbText, rs.Fields(2)) ' End If 'rs.MoveNext 'Loop rs.Close Set db = Nothing MsgBox ("Fertig!") End Sub und anschließend kopieren und einfügen im Entwurfsmodus vielleicht nicht elegant aber es löst mein Problem Danke | 
|   |   | 
|  20.07.2004, 16:06 | #16 | 
| Master  Registriert seit: 22.03.2000 Alter: 66 
					Beiträge: 550
				 |   Gratulation! Ich kann mir nicht vorstellen, daß das Anfügen dieser Felder an die "echte" Tabelle nicht funktioniert. Entscheidend ist wahrscheinlich die Reihenfolge der Operationen. Wahrscheinlich läßt sich alles in einem Schleifendurchlauf erledigen. Jetzt bin ich echt neugierig. Ich glaube ich muß das mal ausprobieren. EDIT: Wie ich's mir dachte. Es funktioniert tadellos. mfg WB | 
|   |   | 
|  20.07.2004, 16:40 | #17 | 
| Master  Registriert seit: 22.03.2000 Alter: 66 
					Beiträge: 550
				 |   Die Zeit zum Editieren war leider schon abgelaufen Hier der Code mit dem ich's probiert habe. Tabelle1 ehält vorher bereits 3 Felder. Set tbl = db.TableDefs("Tabelle1") Do Until rs.EOF Select Case rs.Fields(1) Case "Text" Format = 10 Case "Zahl" Format = 3 Case "Ja/Nein" Format = 1 Case Else Format = 10 End Select Set fld = tbl.CreateField(rs.Fields(0), Format) tbl.Fields.Append fld fld.Properties.Append fld.CreateProperty("Description", dbText, rs.Fields(2)) rs.MoveNext Loop Mit der kleinen Änderung ersparst du dir kopieren/einfügen. mfg WB | 
|   |   | 
|  20.07.2004, 17:10 | #18 | 
| Master  Registriert seit: 17.09.2001 Alter: 49 
					Beiträge: 563
				 |   danke  was ein db.CreateTablDef so alles ausmacht nun steht db.TableDefs und es funktioniert es gibt nur noch einen Hacken es kommt der Fehler "zuviele Felder definiert" hängt aber vielleicht mit der Länge der Feldnamen zusammen | 
|   |   | 
|  | 
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
| 
 | 
 |