Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Einige Fragen zu Visual Basic





Frage

Hallo Ihr Lieben, ich habe bis jetzt nur mit VBScript (ASP) gearbeitet und möchte jetzt gerne mal das ganze mit vb proggen. Ich habe aber jetzt einige Fragen: das abrufen der daten klappt soweit: Option Explicit Private Sub Command1_Click() RS.MoveNext End Sub Private Sub Form_Load() CN.Open "PROVIDER=SQLOLEDB.1;DRIVER=SQL Server;SERVER=;UID=;PWD=;" SQL = "SELECT * from benutzer where a_user = circle24" RS.Open SQL, CN Text1 = RS.Fields("a_user").Attributes = adFldMayBeNull Text2 = RS.Fields("a_kennwort").Attributes = adFldMayBeNull Text3 = RS.Fields("a_email").Attributes = adFldMayBeNull Text4 = RS.Fields("a_plz").Attributes = adFldMayBeNull Text5 = RS.Fields("a_ort").Attributes = adFldMayBeNull Text6 = RS!a_beschreibung.Attributes = adFldMayBeNull Label8 = RS.Fields("a_datum").Attributes = adFldMayBeNull Text7 = RS.Fields("a_alter").Attributes = adFldMayBeNull Text8 = RS.Fields("a_icq").Attributes = adFldMayBeNull Text9 = RS.Fields("a_kopfzeile").Attributes = adFldMayBeNull Text10 = RS.Fields("a_fußzeile").Attributes = adFldMayBeNull Text11 = RS.Fields("a_autoantwort").Attributes = adFldMayBeNull Text12 = RS.Fields("a_signatur").Attributes = adFldMayBeNull Label18 = RS.Fields("a_ip").Attributes = adFldMayBeNull Label19 = RS.Fields("a_host").Attributes = adFldMayBeNull End Sub Private Sub Form_Unload(Cancel As Integer) RS.Close End Sub _________ Wenn ich Attributes = adFldMayBeNull weglasse, dann bekomme ich bei Null-Feldern eine Fehlermeldung. Dies halte ich persönlich für sehr beschränkt. So wie dies oben steht, also hinter jedem Feld ein Attributes = adFldMayBeNull gehts aber auch nicht, dann bekomme ich in jedem Feld ein FALSCH angezeigt. Fragen dazu: 1. Wie kann ich es erreichen, das ohne Attributes = adFldMayBeNull alle Werte so gezeigt werden, wie sie auch auf dem SQL-Server liegen ? 2. Warum kommt diese fehlermeldung, wenn ich es nicht gesetzt habe 3. Warum steht ein Falsch in dem jeweiligen feld, wenn es einen Null-Wert enthält 4. Warum bekomme ich überall FALSCH angezeigt, wenn ich überall Attributes = adFldMayBeNull schreibe Neues Thema. Nächstes Problem, Ich war bis jetzt immmer sehr zufrieden mit der Lektüre aus dem hause Addison-Wesley. Doch das VB 6 Buch is mir zu Assistentenbezogen und deshlab jetzt weitere Fragen, da Sie daraus nicht zu entnehmen sind. Ein wichtiger Punkt ist ja die Navigation innerhalb des Forms. Doch dies will nicht so, wie ich möchte. Ich habe mal zum Spaß mit dem sog. ADODC gearbeitet (Assistents/steuerelement) wenn ich das im form habe und zum beispiel "NEU" drücke dann bekomme ich einen neuen Datensatz angelegt und kann dann die Felder befüllen. Wenn das Form gexchlossen wird und ich es wieder aufmache, oh wunder dann sind die daten so da, wie eben erstellt. Mit meiner Kreation klappt dies nicht. wenn ich also Private Sub Command1_Click() RS.AddNew End Sub schreibe und nutze dann legt er einen neuen Datensatz an, bleibt aber auf dem Datensatz stehen, den ich von Anfang an gesehen habe. Mit RS.Delete verhält es sich ähnlich. Er löscht den aktuellen Datensatz, aber er ist immer noch sichtbar. MoveNext usw. >> scheint sich was zu bewegen, weil der tast.-cursor nicht mehr im feld ist, aber auch hier bleibt der erste sichtbare datensatz stur stehen. ich habe etwas von einer withEvents gehört. das habe ich dann mal probiert also dim withEvents RS As recordse da bekomme ich dann nur die meldung dass das objekt keine automatisierungsereignisse auslöst. tolle meldung Mickysoft, echt tolle Meldung. normalerweise ist es ja auch so, das wenn ich AS geschrieben habe und dann ein leerzeichen folgt, das mir dann eine liste angezeigt wird. dort steht schon kein Recordset drin. mmhh ok dann habe ich es mit: Dim WithEvents rs As ADODB.Recordset versucht. Da bekomme ich dann die Meldung: Objektvariable oder With-Blockvariable nicht festgelegt mit einem verweis auf: rs.Open SQL, CN Fragen dazu: 1. Bei nur As Recordset >> fehlt mir da ein Verweis, wenn ja welche benötige ich dafür 2. Bei AS ADODB.Recordset >> was hat dies nun zu bedeuten. laut doku soll AS recordset und AS ADODB.Recordset dasselbe sein. zu mindestens heisst es, das ADODC nicht vorrangestellt werden muss, da vb so intelligent sei und erkennt dies. ich habe dann wohl ein VB mit weniger IQ oder was stimmt da nicht. 3. Was mache ich sonst falsch oder war der Ansatz richtig oder gibt es eine andere Möglichkeit RS.Bookmark wird laut Fehlermeldung vom SQL-Server nicht unterstützt, genauso wie apsoluteposition. Mmhhh ich weiss nicht mehr weiter Ich bedanke mich schon jetzt für Euren zahlreichen Tips, Tricks und Hilfestellungen Gruß

Antwort 1 von Mick

Hallo,
zu 1:
versuche es mal mit
if not isnull(RS.Fields("a_user")) then
Text1 = RS.Fields("a_user")
etc.

Du versuchst, dem Text1 deb Wert des Asudrucks (RS.Fields("a_user").Attributes = adFldMayBeNull
) zuzuweisen. Wenn das Attribut nicht entsprechend gesetzt ist, dann ergibt es Falsch.

zu 2:
Die Objektvariablen rs muss erst instanziert werden mit:
Set rs = New ADODB.Recordset
rs.Open sql, con, adOpenKeyset, adLockReadOnly

gruss mick


Antwort 2 von teccer

Hallo Mick

erst mal danke für die tips, also mit if then, klappt, ist zwar ein bißchen viel tipperei, aber na ja,

was die zweite sache, mein fehler ich hätte noch erwöhnen sollen, das sowohl das objekt RS als auch CN bereits im modul deklariert sind.

punkt 2 ist leider somit immer noch offen. wir sitzen hier echt mit zwei leuten dran. ich habe gehört das es mit DAO gehen soll, aber dann habe ich doch Access-Verhältnisse, da eine permanent-Verbindung besteht.

also auch keine Lösung, wenn Dir/Euch noch was einfällt, dann schreibt es

Gruß
Pierre

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: