Visualizzazione dei risultati da 1 a 10 su 10

Discussione: VB6 select *

  1. #1

    VB6 select *

    stupidagine!!! non programmo da 2 anni e devo riparare un prgramma che feci ad un amico aiutatemi non voglio impazzire....


    devo cercare in un db tutti i clienti che hanno avuto assistenza il giorno e l'anno prima a quello della data odierna del computer però come lo ho fatto io mi trova anche quelli di tutti gli anni precedenti.

    APERTURA DEL DB
    Set DataBase = OpenDatabase(FrmClienti.TxtDataBase.Text, False, False, ";pwd=" & FrmClienti.TxtPsw.Text & "")


    RICERCA NEL DB DEL GIORNO
    Set Recordset2 = DataBase.OpenRecordset("select * from " & FrmClienti.TxtTabella2.Text & " where data like '*' + '" & FrmClienti.TxtDataRicerca.Text & "' + '*' ", dbOpenDynaset)


    ora come faccio ad affinare la ricerca recuperando l'anno nel campo "ANNO" ???????



    grazie a tutti
    "Non è la fame, ma l'ignoranza che uccide"

  2. #2
    per discussioni legate al VB c'è l'apposito subforum. sposto là.

    p.s. da VB calcoli l'anno "precedente" (anno_odierno - 1) e lo inserisci in una variabile che poi passerai alla query.

    -----------------

    l'anno corrente lo recuperi così: Text1.Text = Year(Date)
    http://forum.html.it/forum/search.ph...by=&sortorder=
    ...Terrible warlords, good warlords, and an english song

  3. #3
    si però nella stringa di ricerca che ho fatto dove lo vado a mettere?

    ti ripeto sono 2 anni che non tocco vb e sto mangiando il libro da questa mattina alle 8.00

    scusate il disturbo lo so che non vi piace far fare il copiato ma non ho proprio tanto tempo per iniziare di nuovo ma gli devo questo favore per non lasciare nella cacca un amico che lavora con il mio programma.
    "Non è la fame, ma l'ignoranza che uccide"

  4. #4
    SELECT * FROM mia_tabella WHERE campo_anno = variabile_data_odierna_meno_uno;

    domanda:

    come è strutturata la data nel database?

    es:

    hai 3 campi di tipo testo (giorno, mese, anno)
    oppure un unico campo di tipo data (data) ?
    ...Terrible warlords, good warlords, and an english song

  5. #5
    no ho 2 campi

    in uno c'è il giorno e il mese in questo modo 23/01
    nell'altro l'anno 2005 scritto in questo modo 4 cifre

    variabili
    dim GiornoMese,Anno

    Anno = anno - 365

    quindi già da come risultato 2004 invece di 2005
    "Non è la fame, ma l'ignoranza che uccide"

  6. #6
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Dalla tua query originale sembra che hai una tabella con un campo di
    tipo testo in cui menorizzi la data, giusto ?
    In che formato è memorizzata la data ?
    1) GG/MM/AAAA 2) GG/MM/AA 3) AAAAMMGG

    Nei primi due casi, la ricrca è più complicata, perchè una data
    che comincia per 31 è sempre 'maggiore' di una data che comincia per,
    diciamo, 05, anche se la prima è di 10 anni più vecchia.

    Nel terzo caso, potresti utilizzare la forma
    codice:
     
     ..... "Select ... Form .... Where data between '" & data1 & "' AND '" & data2 & '"
    Dacci più info.
    Ciao,
    Ciao, Brainjar

  7. #7
    cerco di farvi capire meglio

    io recupero la data da due caselle di testo dove in una c'è il giorno e il mese "24/01" e nell'altra l'anno corrente "2005"

    text1="24/01"
    text2="2005"

    poi con la variabile Anno ho spostato l'anno di -365 giorni

    GiornoMese = Date + 1
    Anno = Date - 365
    TxtDataRicerca.Text = Format(GiornoMese, "d/mm")
    TxtdataRicerca2.Text = Format(Anno, "yyyy")

    ora la ricerca dovrebbe tirare fuori tutti i record con il giorno di oggi con l'anno del 2004 prendendo sempre i parametri da quella text e non in automatico.

    select * from tabella where Anno(2004) AND giorno(24/01)

    come si scrive di preciso?????????
    "Non è la fame, ma l'ignoranza che uccide"

  8. #8
    giorno_mese = date + 1
    anno - 365 ?

    devi fare: anno - 1 (e non - 365)

    non mi sembra neppure logica - visto che ti serve il giorno - la scelta di dividere la data
    in due distinti campi "giornomese" e "anno"

    per trovare la data odierna basta fare:
    codice:
    dim dd as String
    dim mm as String
    dim yy as String
    
    Text1.Text = Day(Date)      ' rertituisce 24
    Text2.Text = Month(Date)    ' restituisce 1
    Text3.Text = Year(Date)     ' restituisce 2005
    
    dd = Text1.Text             'giorno
    mm = Text2.Text             'mese
    yy = Text3.Text - 1         'anno corrente - 1 (2005 - 1 = 2004)
    
    If Len(dd) = 1 Then dd = "0" & dd      '24 è composto da 2 cifre: quindi niente aggiunta di zero 
    If Len(mm) = 1 Then mm = "0" & mm      '(gennaio) "1"  diventa "01" (aggiunge lo zero)
    in questo caso (con 3 distinti campi) la query sarebbe stata la seguente:

    SELECT * FROM tabella WHERE campo_giorno = dd AND campo_mese = mm AND campo_anno = yy;

    (estrapola tutti i record risalenti allo stesso giorno e mese corrente, ma dello scorso anno: 24/01/2004)

    N.B. con un campo unico (giorno-mese)
    devi modificare/implementare il codice sopra nel seguente modo
    codice:
    dim ddmm as String
    ddmm = dd & "/" & mm
    SELECT * FROM tabella WHERE campo_giorno_mese = "ddmm" AND campo_anno = yy;

    N.B. se i campi sul database sono di tipo numerico, i valori delle variabili non vanno passati tra doppi apici "", altrimenti (se sul database sono di tipo testo/stringa) vogliono i doppi apici. (nel mio esempio: anno è numerico e giorno_mese è di tipo testo/stringa)

    la query ACCESS dell'esempio sopra, in VB6 diventerebbe così:
    codice:
    Set rs = cn.Execute("SELECT * FROM Tabella WHERE campo_giorno_mese = '" & ddmm & "' AND campo_anno = " & yy & "")
    ...Terrible warlords, good warlords, and an english song

  9. #9
    grazie stasera provo


    ma pensi che con un unico campo sia meglio....

    se mai gli cambio il db però poi dovrò modificare tutti i suoi dati che ha già dal 2002......
    "Non è la fame, ma l'ignoranza che uccide"

  10. #10
    grazieeeeeeeeeeeeeeee


    ok tutto riolto
    però ora mi è venuta voglia di riprogrammare!!!


    ma che me meto a fa...... mo ce penso va

    grazie ancora a tutti
    "Non è la fame, ma l'ignoranza che uccide"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.