Oppure

Loading
14/04/09 17:51
Ciao a tutti spero sapreste aiutarmi.
Ho un problema con un database mi spiego
in vb6 ho una sub che mi dovrebbe prendere due record a caso da una tabella del database
posto il codice:
Sub crea()
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\torneo.mdb"
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cn.Open stringa
    rs.Open "sfide", cn, 1, 2
        rs.AddNew
        rs("giocatorea") = rs.Source = " select  * from [giocatori] order by rnd([id]);"
        rs("giocatoreb") = rs.Source = " select  * from [giocatori] order by rnd([id]);"
    rs.Update
End Sub


ma niente il risultato nella tabella è:
giocatorea giocatoreb
0 0

Come posso risolvere questo problema
14/04/09 20:03
Questo prende 2 campi a caso:

Modulo:

Public WS As Workspace
Public DBD As Database


Dichiarazioni:

Dim tb1 As Recordset
Dim tb2 As Recordset


Evento form_load:

   On Error GoTo errore
      Set DBD = DBEngine.Workspaces(0).OpenDatabase("path")
   Exit Sub

   errore:
      MsgBox ("Database inesistente")
   Exit Sub


Evento Pulsante_click:
' crea 2 recordset ordinati random, ripete fino a che le tuple non sono diverse
do 
   Set tb1 = DBD.openrecorset("SELECT * FROM nometabella ORDER BY rnd([id])")
   set tb2 = DBD.openrecorset("SELECT * FROM nometabella ORDER BY rnd([id])")
   tb1.movefirst
   tb2.movefirst
loop until tb1.nomecampo <> tb2.nomecampo
' output su schermo (nomecampo è l'attributo da dare in output)
label1.caption = tb1.nomecampo
label2.caption = tb2.nomecampo



EDIT: la funzione rnd([id]) temo sia difettosa, puoi sostituirla con:


Randomize()
Dim Num As Integer
Do
   Num = CInt(Int((lunghezzatabella * Rnd()) + 1))
   For I=0 to Num
      tb1.movenext
   Next I
   Num = CInt(Int((lunghezzatabella * Rnd()) + 1))
   For I=0 to Num
      tb2.movenext
   next I
loop until tb1.nomecampo <> tb2.nomecampo
label1.caption = tb1.nomecampo
label2.caption = tb2.nomecampo


non sono sicuro però che funzioni... non l'ho testato :-?
Ultima modifica effettuata da 14/04/09 23:33
15/04/09 15:26
non riesco a capire cosa hai scritto.
Per favore potresti scriverlo con le stesse variabili che ho usato io??
15/04/09 15:35
theprogrammer
Non vi potrete capire perche' tu usi la libreria ADO e lui la (vecchia) DAO ...
aaa
15/04/09 15:39
sinceramente so solo lavorare con le DAO...
15/04/09 15:57
nessuno sa come aiutarmi?????????'
vi ringrazio in anticipo
15/04/09 16:08
posso provare a sfruttare le mie capacità di script kiddie (che cosa triste :d ) se aggiungi un po di commenti al codice, così per sapere ogni comando che cosa fa...
15/04/09 16:51
theprogrammer
Gli errori sono in

rs.AddNew

(non serve, non devi aggiungere record alla tabella)

e in

rs("giocatorea";) = rs.Source = " Select * from [giocatori] order by rnd([id]);"
rs("giocatoreb";) = rs.Source = " Select * from [giocatori] order by rnd([id]);"

non hanno senso ...
aaa