+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: errore su campo indicizzato

  1. #1
    L'avatar di francof
    francof non è in linea Scolaretto
    Post
    352

    errore su campo indicizzato

    Ho finito le aspirine ma errore e mal di testa rimangono:

    in una tabella vuota di un mdb aggiungo dei record prelevandoli da un .xls dove sono in ordine crescente di data e non esiste alcun codice
    nella tabella vi sono, tra gli altri, un campo codice long indicizzato che creo ed incremento in una variabile definita long, e un campo data date.
    dopo aver elaborato i rec. leggendoli in modo sequenziale dal primo all' ultimo, li visualizzo in una dbgrid e qui, come nella tabella, invece di essere ordinati x cod.(dal 1 al 1600) ne trovo alcuni fuori posto: records con cod e data successivi a quelli che seguono.
    Ho provato a cambiare il tipo dati del campo codice (integer, text) ma il problema si presenta sempre, a meno di eliminare l' indice che però mi serve in un'istruzione seek.


    grazie x l' attenzione
    franco

  2. #2
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Luogo
    Prato
    Post
    1,336
    Ciao. Usi ADO o DAO (da come parli, sembreresti un utente di DAO, ma non posso esserne sicuro...)?
    A volte i recordset restituiti non sono ordinati come ci si aspetterebbe. E' un problema noto, ed è uno dei motivi per i quali viene spesso sconsigliato di fare affidamento sulla proprietà AbsolutePosition.
    In effetti, se vuoi essere certo che il tuo recordset sia ordinato come ti serve, lo devi ordinare esplicitamente, con il metodo Sort (se usi ADO), o meglio ancora con una clausola ORDER BY nell'istruzione sql.
    Tra l'altro, mi sembra che anche il controllo DBGrid abbia qualche metodo o proprietà per gestire l'ordinamento.
    Spero sia utile. Ciao.

  3. #3
    L'avatar di francof
    francof non è in linea Scolaretto
    Post
    352
    ciao,
    si in effetti uso, x popolare la grid, un datacontrol dao (maledetto).
    nelle proprietà della dbgrid non ho trovato la possibilità di ordinare i rec. e non so come collegare il datacontrol ad una sql: un esempio?

    grazie 1000
    franco

  4. #4
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Luogo
    Prato
    Post
    1,336
    Non ti posso dare alcun esempio mio, perché io uso ADO (e da anni suggerisco a tutti di abbandonare DAO). Però si può cercare qualcosa nell'help. Che istruzione usi per aprire il recordset, la OpenRecordset? Se la selezioni e premi F1 ci sono gli argomenti che si possono passare all'istruzione, e tra quelli supportati c'è anche una stringa sql.
    Inoltre, googlando un po' ho trovato questi spezzoni di codice:
    codice:
    Set RS = DB.OpenRecordset("SELECT * FROM tblFornitori")
    
    query = "select * from magazzino where idveicolo=4;"
    Set vendita = dbgesticars.OpenRecordset(query, dbOpenDynaset)
    
    ' (esempio per VBA delle maschere di Access)
    sql1 = sql1 & "SELECT Sum(fatturato) AS sommadiFatturato"
    sql1 = sql1 & " FROM Ordini"
    sql1 = sql1 & " WHERE Cliente='" & lista1.Value & "'And Annullato=off AND Fornitore='" & lista4.Value & "'AND ArrivoOrdine between # " & lista2.Value & "# and #" & lista3.Value & "# "
    Set rs = DB.OpenRecordset(sql1, DB_OPEN_DYNASET)
    
    Set RS = DB.OpenRecordset("SELECT * FROM ANAGRAFICA ORDER BY ", dbOpenDynaset)
    Inoltre qui c'è un piccolo tutorial su DAO:
    http://xoomer.virgilio.it/cmaccher/w...ile/DAO_VB.pdf

    Spero ti sia utile.

    PS: DAO si vede ancora in giro perché ci sono tante persone che copiancollano del vecchio codice senza preoccuparsi di capire come funziona, e appena c'è un baco aspettano che qualcuno gli scodelli il codice corretto senza studiarlo e cercare di capire cosa non andava e perché ora va. Ma naturalmente non è il tuo caso, vero?
    PPS: se puoi, passa ad ADO.

  5. #5
    L'avatar di francof
    francof non è in linea Scolaretto
    Post
    352
    premessa: programmo in modo molto sporadico e seguendo un paio di manuali ho iniziato con dao. poi, ovviamente, quando i progetti diventano pn poco più complessi saltano fuori i problemi.

    nel mio caso accedo alla tabella senza utilizzare del codice, ma tramite le proprietà DATABASENAME e RECORDSOURCE del controllo DATA, che collego alla grid tramite la proprietà DATASOURCE della grid stessa.

    forse dovrei impostare con una SQL, a codice, la proprietà RECORDSOURCE del DATACONTROL. ma come?

+ Rispondi al Thread

Discussioni simili

  1. Articolo: [VBA] Gestione degli errori
    Da dragone bianco nel forum Microsoft Office, Access, VBA
    Risposte: 1
    Ultimo Post: 18-09-2008, 16:38
  2. Errore definizione campo MySql
    Da cive nel forum PHP
    Risposte: 3
    Ultimo Post: 15-07-2005, 13:23
  3. Errore: Impossibile trovare un campo
    Da temerario nel forum ASP 3.0, ASP .Net
    Risposte: 2
    Ultimo Post: 17-05-2005, 12:06
  4. Migrazione dati
    Da gene50 nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 28-07-2004, 12:52

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi