vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Hilfe! Wie setzt man diese SQL Abfrage in VB um? 
Autor: atrider
Datum: 08.04.10 21:30

Hallo Leute,

hoffentlich könnt Ihr mir helfen, ich weiß nicht weiter. Die folgende MSQL Abfrage muß ich in VB2005 umsetzen und scheitere bisher daran. Die Abfrage soll die Lücken in einer ID-Spalte einer Datenbank finden und funktioniert auch einwandfrei. Zurückgeliefert wird im MSQL Query Tool eine ID-Nummern-Liste mit sagen wir 500 Einträgen aus einem Bereich von 1-6000.

Nun muß ich ein kleines Kommandozeilen Tool (eine Exe) schreiben, welches diese Abfrage an die DB absetzt und das Ergebnis auf dem DOS-Schirm als Liste anzeigt. Beispiel:

001 002 005 009 010 011 021 ...usw. fortlaufend.

Wie muß ich nun den Code anpassen, damit das funktioniert?


Die MSQL Abfrage:
create table #MissingIDS 
(
 Id char(4) PRIMARY KEY
 ) 
declare @maxid int, @currentid int 
 
SELECT @maxid=max(cast(Id as int)) FROM dbo.UserConfig 
 
select @currentid=1 
 
while @currentid<@maxid
begin 
 if not exists(select Id from dbo.UserConfig where 
   Id=right('0000'+cast(@currentid as varchar(4)),4)) 
   insert #MissingIDS 
   select right('0000'+cast(@currentid as varchar(4)),4) 
   select @currentid=@currentid+1 
 end 
select * from #MissingIDS 
drop table #MissingIDS
Mit diesem Code habe ich es probiert.

Dim connStr As String
Dim strSqlServer As String = ""
Dim strDatabase As String = ""
Dim arlIds As New ArrayList
 
'SQL connection string bauen
connStr = "Server=" & strSqlServer & ";Database=" & strDatabase & ";Connect" & _
  "Timeout=30;Trusted_Connection=True;"
 
Dim strSQL As String = "create table #MissingIDS (Id char(4) PRIMARY KEY)" & _
  "declare @maxid int, @currentid int SELECT @maxid=max(cast(Id as int)) FROM" & _
  "dbo.UserConfig select @currentid=1 while @currentid<@maxid begin if not" & _
  "exists(select Id from dbo.UserConfig where Id=right('0000'+cast(@currentid" & _
  "as varchar(4)),4)) insert #MissingIDS select right('0000'+cast(@currentid as" & _
  "varchar(4)),4) select @currentid=@currentid+1 end select * from #MissingIDS" & _
  "drop table #MissingIDS"
 
Dim con As New SqlClient.SqlConnection(connStr)
Dim cmd As New SqlClient.SqlCommand(strSQL, con)
Dim reader As SqlClient.SqlDataReader
 
con.Open()
 
'execute the command
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
 
'datensätze in ein array speichern zur weiterverarbeitung
Dim check As Boolean = False 'zur kontrolle, falls keine sqldaten gefunden 
' werden
While reader.Read()
  check = True
  Dim objDatensatz As New ClassIds
  objDatensatz.Id = reader!Id.ToString.Trim
  arlIds.Add(objDatensatz)
End While
For i As Long = 0 To arlIds.Count - 1
  Console.Write(arlIds(i).id & " ")
Next
 
reader.Close()
con.Close()
Was ist da falsch??

Klaus

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Hilfe! Wie setzt man diese SQL Abfrage in VB um?1.976atrider08.04.10 21:30
Re: Hilfe! Wie setzt man diese SQL Abfrage in VB um?1.126atrider09.04.10 08:04
Re: Hilfe! Wie setzt man diese SQL Abfrage in VB um?1.192ModeratorFZelle09.04.10 11:12
Re: Hilfe! Wie setzt man diese SQL Abfrage in VB um?1.034atrider11.04.10 10:24
Re: Hilfe! Wie setzt man diese SQL Abfrage in VB um?1.076ModeratorFZelle11.04.10 12:02
Re: Hilfe! Wie setzt man diese SQL Abfrage in VB um?1.071atrider11.04.10 21:49

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel