webForumDet fria alternativet

Databas Fel

10 svar · 271 visningar · startad av PsyDonia

PsyDoniaMedlem sedan maj 2003924 inlägg
#1

Dim Conn As New ADODB.Connection
Dim strConn As String

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Databas.mdb"

Conn.Open strConn

Dim RecSet As New ADODB.Recordset
Dim strSQL As String

strSQL = "SELECT * FROM EnSak WHERE date=" & Date

RecSet.Open strSQL, Conn, adOpenStatic, adLockOptimistic 'Ett recordset förhoppningsvis...
Dim i
i = 0
Do Until RecSet.EOF

    Text1(i).Text = RecSet!Hitta
    RecSet.Update

i = i + 1

RecSet.MoveNext
Loop

RecSet.Close
Conn.Close
Set RecSet = Nothing
Set Conn = Nothing

Får inte detta att funka jag vill att Hitta ska skrivas ut i Text1(i).text om date i databasen är lika med dagens datum.

borde inte min kod funka..
eller vad e fel.
för den vill inte lägga till dom "Hitta" som är med dagens datum

PsyDoniaMedlem sedan maj 2003924 inlägg
#2

ingen som förstår vad jag menar och kan hjälpa mig.

@ndersMedlem sedan juni 200032 969 inlägg
#3

Jag är ledsen, jag har inte sett ditt inlägg förrän nu.

Får du något felmeddelande? Vad är fältet datum av för typ? Om det är (som det borde vara) av riktig datumtyp så ska du, eftersom du kör Access, omsluta datumvärdet med #.

strSQL = "SELECT * FROM EnSak WHERE [date]=#" & Date & "#"

Date är dessutom ett dåligt fältnamn (reserverat ord) så helst ska du byta det mot något annat, alternativt klamra som i mitt exempel ovan.

Jag efterlyser också [kod]-taggar så din kod blir mer lättläst.

Mvh,

PsyDoniaMedlem sedan maj 2003924 inlägg
#4

ok ska komma ihåg kod taggar nästa gång sorry.
ska testa det.
date är för tillfället bara vanlig text som typ.
får inget felmedelande programmet vill bara inte ta in dom raderna som har rätt datum.

@ndersMedlem sedan juni 200032 969 inlägg
#5

Om fältet date är av typen text (inte bra), så ska du istället för brädgårdar runt värdet ha apostrofer.

Mvh

PsyDoniaMedlem sedan maj 2003924 inlägg
#6

@nders nu funkar det..
tack så mycket.

viste inte hur man lägger in kod tagar men läste i forum regler.
så i fortsättningen ska det bli rätt taggar..
@ndersMedlem sedan juni 200032 969 inlägg
#7

Får man fråga vad du har RecSet.Update till i koden? Jag skulle vilja förenkla lite:

Dim Conn As New ADODB.Connection 
Dim RecSet As New ADODB.Recordset 
Dim strSQL As String 
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Databas.mdb" 

strSQL = "SELECT * FROM EnSak WHERE [date]='" & Date & "'"

RecSet.Open strSQL, Conn, adOpenStatic, adLockOptimistic 'Ett recordset förhoppningsvis... 
Dim i 
i = 0 
Do Until RecSet.EOF 
     Text1(i).Text = RecSet!Hitta 
     i = i + 1 
     RecSet.MoveNext 
Loop 

RecSet.Close 
Conn.Close 
Set RecSet = Nothing 
Set Conn = Nothing

Vad gäller konstanterna du använt när du skapar recordsetet, man kan mycket väl korta bort de också möjligen, jag använder aldrig sådana konstanter, så jag är inte säker på vad de betyder faktiskt.

Men bra att du fick det att fungera. :)

Mvh

PsyDoniaMedlem sedan maj 2003924 inlägg
#8

jo jag kör en del ASP så därför så därför blev det en update för med asp e det bra att göra en update.
kanske ska ta bort.
lite onädigt kanske men men.

@ndersMedlem sedan juni 200032 969 inlägg
#9

PsyDonia skrev:

jo jag kör en del ASP så därför så därför blev det en update för med asp e det bra att göra en update.

Hur menar du då?

Update använder du inte när du endast läser data, utan ska göra förändringar i recordsetdata, antingen i ett frånkopplat recordset eller förändringar som lagras i databasen.

Så om du kör .Update i andra lägen än när du uppdaterar, lägger till, eller tar bort data, släng bort.

Mvh

PsyDoniaMedlem sedan maj 2003924 inlägg
#10

vet inte va väl trött eller nåt.
nu e jag förvirrad här.
när jag tänker efter så .update helt fel...

Nexus86Medlem sedan okt. 20023 030 inlägg
#11

@nders skrev:

så jag är inte säker på vad de betyder faktiskt

MSDN skrev:

Recordsets can be set to read-only, or they can be configured to allow updates. For most scripts, the LockType can be set to adLockOptimistic (value = 3). With this setting, the record being edited is not locked (that is, no restrictions are placed on another user accessing that record) until you call the Update method.

MSDN skrev:

If you set the CursorLocation to the client, you must set the CursorType to adOpenStatic (value = 3). This type supports scrolling forward and backward in the recordset but does not show changes made by other users. This is because the cursor is operating on data cached on the client computer rather than directly from the database.

Hittades på http://www.microsoft.com/technet/treeview/default.asp?url=/technet/scriptcenter/scrguide/sas_ent_cwja.asp. :)

199 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
196 ms — hämta tråd, inlägg och bilagor (db)