PDA

Vollständige Version anzeigen : doppelschleife zählt nur bis 3


TykaAndreas
31.10.2003, 11:41
bilde mir ein, dass ich mit doppelschleifen klarkomme, aber was das soll weiss ich nicht.
Die äussere Schleife zählt die Zeilen , die innere die spalten.
Der Einfachheit halber tu ich so als hätte die Tabelle <b>5</b> Zeilen und <b>2</b> Spalten.
deshalb würd ich erwarten dass die innere schleife 5 mal bis <b>2</b> zählt, macht sie aber nicht , Was seh ich das falsch?
Ich kann leider kein konkretes Ziel nennen, dieser Code ist ein neuer Versuch an die Tabellen Eigenschaften ranzukommen (varchar, char usw) dabei fiel mir das dann auf.
Die Menge der Zeilen wird nur dann richtig gezählt wenn ich das <b>clmn = dt.Columns(I)</b>auskommentiere und die menger der Spalten wird nur bis 3 gezählt , versteh ich überhaupt nicht. Verwende ich die <b>Fill</b> Methode ist es auch nicht anders


<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre> <span class="TOKEN">Sub</span> dopp_schleife(<span class="TOKEN">ByRef</span> ds <span class="TOKEN">As</span> DataSet)
&nbsp;
<span class="TOKEN">Dim</span> cnnStrg <span class="TOKEN">As</span> <span class="TOKEN">String</span> = &quot;provider =sqloledb;Data source =(local);&quot; &amp; _
&quot;initial catalog = northwind;trusted_connection=yes;&quot;
<span class="TOKEN">Dim</span> mydata <span class="TOKEN">As</span> <span class="TOKEN">New</span> OleDbDataAdapter
<span class="TOKEN">Dim</span> cnn <span class="TOKEN">As</span> OleDbConnection = <span class="TOKEN">New</span> OleDbConnection(cnnStrg)
<span class="TOKEN">Dim</span> cmd <span class="TOKEN">As</span> <span class="TOKEN">New</span> OleDbCommand
<span class="TOKEN">Dim</span> dt <span class="TOKEN">As</span> DataTable
<span class="TOKEN">Dim</span> clmn <span class="TOKEN">As</span> DataColumn
<span class="TOKEN">Dim</span> J <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="TOKEN">Dim</span> I <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="TOKEN">Dim</span> m_row <span class="TOKEN">As</span> DataRow
&nbsp;
<span class="TOKEN">Dim</span> strSql = &quot;SELECT * FROM Customers&quot;
cnn.Open()
cmd.CommandText = strSql
cmd.Connection = cnn
mydata.SelectCommand = cmd
&nbsp;
Try
mydata.FillSchema(ds, SchemaType.Source, &quot;tbl_Customers&quot;)
<span class="REM"> ' mydata.Fill(ds, &quot;tbl_Customers&quot;)</span>
Catch ex <span class="TOKEN">As</span> Exception
MsgBox(ex.Message)
<span class="TOKEN">Exit Function</span>
<span class="TOKEN">End</span> Try
&nbsp;
dt = ds.Tables(0)
<span class="TOKEN">For</span> J = 1 <span class="TOKEN">To</span> dt.Rows.Count - 1
<span class="TOKEN">For</span> I = 1 <span class="TOKEN">To</span> dt.Columns.Count - 1
clmn = dt.Columns(I)
Msgbox(&quot;J=&quot; &amp; J &amp; &quot; I =&quot; &amp; I)
<span class="TOKEN">Next</span>
<span class="TOKEN">Next</span>
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>
&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Serge
31.10.2003, 13:26
versuchs doch aml mit folgender Schleife

for each m_row in Dt.rows
i+= 1
for each clmn in Dt.columns
j+=1
next clmn
next rw

Bei deinem Ansatz bin ich mir nicht sicher aber wenn du Dt.rows.count -1
ohne -1 nimmst sollte es auch gehn
Du fängst ja mit i,j = 1 die Schleife an dann denke ich ist das -1 überflüssig

TykaAndreas
31.10.2003, 17:11
Hallo Serge,

hatte mich selber vera... , die schleife ist von einem Link , war dann so versessen darauf die Lösung zu finden für Tabellen-Eigenschaften und hab nicht bemerkt dass ich mit dem „ds“, das an die Sub übergeben wird, schon eine Tabelle mitgebe „dt.Tables(0)“ zeigt natürlich darauf.