Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SQL-Befehl größte Zahl auslesen

149 views
Skip to first unread message

Steffen Rachel

unread,
May 9, 2001, 2:07:26 AM5/9/01
to
Moin NG,

kleine Frage zu SQL. Gibt es einen SQL Befehl wo ich die größte Nummer
auslesen kann. Ich meine z.B.: bei LfdNr und diesen Wert dann einer
Variablen mLfdNr zuweisen?

Bin euch schon mal im voraus dankbar!

mfg Ramses


Garbe Philipp

unread,
May 9, 2001, 2:46:55 AM5/9/01
to
nimm einfach folgenden SQL-Befehl her:

Select max(LfdNr) FROM tabelle

Gruß Philipp

"Steffen Rachel" <Rams...@web.de> schrieb im Newsbeitrag
news:9damtv$ta5$04$1...@news.t-online.com...

Oliver Kowahl

unread,
May 9, 2001, 2:56:00 AM5/9/01
to
Hallo,

-> "Select max(LfdNr) from "...

Die Serialisierung ist zu beachten! Bei Mehrbenutzerbetrieb kann der ermittelte
Wert nicht ohne Probleme als Primärschlüssel benutzt werden, da zur gleichen Zeit
derselbe Wert ermittelt werden kann.

Greets
Oliver


-----Originalnachricht-----
Moin NG,

mfg Ramses


.

Steffen Rachel

unread,
May 9, 2001, 3:49:23 AM5/9/01
to
Erst mal vielen dank an euch beide. Aber irgendwie stehe ich auf der
Leitung, jetzt habe ich den max Wert der LfdNr und habe diesen an eine
Variable übergeben um nun 1 zu addieren. Aber jetzt kommt die Fehlermeldung
Typen unverträglich!

mLfdNr = "SELECT max(LfdNr) FROM tabelle"
mLfdNr = mLfdNr + 1

mfg Ramses


Oliver Kowahl

unread,
May 9, 2001, 6:07:08 AM5/9/01
to
Hi,

kleines Beispiel:

dim mLfdNr as Long
Data1.recordsource="SELECT max(LfdNr) FROM tabelle"
Data1.refresh
mLfdNr=Data1.recordset.fields(0).value
mLfdNr=mLfdNr+1

Die Fehlermeldung kommt daher, daß die Variable mLfdNr den Typ String besitzt, Du
aber eine Rechenoperation durchführen möchtest (verschiedene Datentypen!)

Bye
Oliver

-----Originalnachricht-----

mfg Ramses


.

Garbe Philipp

unread,
May 9, 2001, 5:56:47 AM5/9/01
to
du musst dir erstmal ein recordset definieren und dann den
sql-befehl absetzen. mLfdNr kriegst du erst aus dem recordset

hier ein kleines beispiel:

<sample>
Dim l_cn As ADODB.Connection
Dim l_rs As ADODB.Recordset

'Open connection.
Set l_cn = CreateObject("ADODB.Connection")
l_cn.Open "Provider=SQLOLEDB.1;" & _
"Data Source=Server;" & _
"Initial Catalog=Datenbank;" & _
"Integrated Security = """""

'Connection String fuer SQL-Server
'Musst du noch fuer Access anpassen

Set l_rs = CreateObject("ADODB.RecordSet")
l_rs.CursorLocation = adUseClient
l_rs.CursorType = adOpenStatic
l_rs.LockType = adLockOptimistic

l_rs.Open "SELECT max(LfdNr) as MaxLfdNr * FROM Tabelle", l_cn

mLfdNr = l_rs.Fields("MaxLfdNr")

</sample>

"Steffen Rachel" <Rams...@web.de> schrieb im Newsbeitrag

news:9dasum$95m$02$1...@news.t-online.com...

Armin Zingler

unread,
May 9, 2001, 5:53:29 AM5/9/01
to
"Steffen Rachel" <Rams...@web.de> schrieb

Bisher dachte ich, es wäre ein Datenbank-Problem. ;-)

Also analysieren wir mal den Code: mLfdNr ist vermutlich numerisch
deklariert, also Integer oder Long. So, dieser Variablen willst Du nun
einen String zuweisen. VB versucht beim Ausführen den String in eine
Zahl umzuwandeln. Das ginge noch bei
mLfdNr = "5"
aber hier muß es scheitern.

Was Du schreibst ist ein SQL-String. SQL ist eine Abfragesprache für
Datenbanken. Du mußt also den SQL an eine Datenbank schicken. Diese
liefert Dir das Ergebnis in Form eines Recordsets zurück. Aus dem
Recordset kannst Du nun den Wert herausholen.

Mehr kann ich dazu nicht sagen, da wir nicht wissen, welche
Datenzugriffskomponente Du verwendest (DAO oder ADO?), ob und wie die
Datenbank-Objekte deklariert sind.

Armin

0 new messages