Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    24

    [VB6] Problema con query per un principiante

    Ciao ragazzi,

    è il mio primo messaggio in questo forum, sono un principiante che ancora non ha potuto studiare niente in materia, abbiate venia.
    Spiego sinteticamente il problema, spero di riuscire a farmi capire.
    Devo modificare una delle funzioni contenute il una dll sviluppata in vb6 (che fà da strato intermendio fra il database sql e un sito in asp).

    Vorrei ottenere una cosa del genere:

    codice:
    If tabListini.ID = ""  Then
        SQLString = SQLString & " 'Non trovato ' AS Listini,"
    Else
        SQLString = SQLString & "'Trovato! ' + str(tabListini.ID) AS Listini,"
    End If

    Vorrei che se nella riga del campo ID, contenuto nella tabella tabListini, si trovasse un valore venga fuori "trovato", altrimenti "non trovato"
    Solo che così facendo l'output è ad esempio:

    LISTINI
    trovato! 456
    trovato! 345
    (quando la riga del campo ID è vuota non scrive nulla invece di scrivere "non trovato")
    trovato! 721
    trovato! 1994
    ..ecc


    Da ignorante ho capito che in base alla condizione lui entra nel primo o nel secondo blocco di istruzioni, e non cotrolla la condizione di volta in volta. Quindi se nella prima riga del campo ID non ci fosse nulla, lui scriverebbe "non trovato" per tutte le righe.

    Avete capito qualcosa?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come ti ho detto in un altro forum (non posso fare altro che rispondere con la stessa risposta alla medesima domanda ...)

    1) che tipo di database stai usando ?

    2) che tipo di dato e' ID ?

    3) che tipo di query stai costruendo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    24
    mi vergogno anche per il messaggio in due forum differenti, non pensavo di trovare le stesse persone, scusami.

    Il database sta su un server con microsoft SQL server.
    ID è un'intero.
    La query che sto modificando in pratica serve elencare un'elenco di imbarcazioni (modello della barca,il nome, il listino ecc)
    In listino vorrei far visualizzare delle differenti "informazioni" a seconda se nel campo ID trovo dei dati, oppure no.
    E' una cosa fattibile pensi?

    grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da tooshort
    mi vergogno anche per il messaggio in due forum differenti, non pensavo di trovare le stesse persone, scusami.
    Esagerato ... ... non c'e' problema ...

    ID è un'intero.
    Allora ID potra' essere 0 ma non mancare ...

    Come e' fatta la tabella ? (campi , tipo ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    24
    Originariamente inviato da oregon

    Come e' fatta la tabella ? (campi , tipo ...)

    la tabella tabListini contiene 4 campi interi di cui un ID(Chiave). Poi uno di questi 4 campi è un codice che identifica l'imbarcazione (ho un'altra tabella barche che ha un ID che corrisponde a questo), le due tabelle quindi solo legate opportunatamente da un JOIN.
    Ecco perchè se scrivo nella query "tabListino.ID As Listino" mi compare correttamente:

    ID barca | nome barca | modello | Listino |
    ....324. ..|...non so......|...non so..|..trovato! 543..|
    ....875....|...non so......|...non so..|.....................| (questo succede se il campo ID di tabListino è vuoto, ovvero non scrive nulla, invece di mettere non trovato)

    Ps. Naturalmente poi non devo scrivere "trovato! + il numeretto", ma creare un link che mi porti da un'altra parte del sito. Questo non l'ho spiegato per complicare ulteriormente le cose, ma da lì in poi me la saprei cavare.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ma continuo a non capire ...

    Se l'ID e' numerico (anzi e' un campo chiave ...) come fa ad essere null (come hai mostrato nel tuo primo post)?

    Partiamo da una query del tipo

    SELECT * FROM tabListino

    che mostrera' tutti i record ... cosa vuoi che venga mostrato/non mostrato ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    24
    Originariamente inviato da oregon
    cosa vuoi che venga mostrato/non mostrato ?

    ho modificato il messaggio sopra per essere più chiaro:
    vorrei che nel campo listino, se lui trovasse il listino di una barca(collegato ad essa quindi) me lo farebbe vedere, altrimenti dovrebbe scrivere un'altra cosa e non lasciarmi in bianco il campo..

    Questo stavo provando a farlo con quell' If al primo post, ma forse è fantascienza per il linguaggio sql/vb6

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... scusa ... allora, se ho capito bene hai 2 tabelle ... giusto?

    Le mostri con i campi e i collegamenti ?

    Mi sa che fai confusione con i nomi dei campi ... quando dici

    "questo succede se il campo ID di tabListino"

    a quale tabella ti riferisci? E il campo si chiama ID ? Come e' collegato alla tabella delle barche?

    Parli di una JOIN ... la mostri?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    24
    codice:
    Public Function GetBoatsList(Optional ByVal FilterOptions As String = "", Optional ByVal SortOptions As String = "SortOrderTipoImbarcazione, IdTipoImbarcazione, SortOrder, Lunghezza, Nome", Optional ByVal PageSize As Integer = 0, Optional ByVal PagePointer As Integer = 0) As ADODB.Recordset
       Dim SQLString As String
       
       SQLString = "SELECT * FROM (SELECT FlottaCharter.*, BasiCharter.CodiceBase, BasiCharter.Descrizione" & mLanguageCode & " AS DescrizioneBase, LineeCharter.CodiceLinea, LineeCharter.Descrizione" & mLanguageCode & " AS DescrizioneLinea,"
       SQLString = SQLString & " TipiImbarcazioni.SortOrder as SortOrderTipoImbarcazione, TipiImbarcazioni.Descrizione" & mLanguageCode & " AS DescrizioneTipo, LineeCharter.IdArmatore, Armatori.Descrizione AS DescrizioneArmatore, "
       SQLString = SQLString & "'Listini' AS Listini,"
       SQLString = SQLString & "'Preview' AS Preview"
       SQLString = SQLString & " FROM FlottaCharter INNER JOIN"
       SQLString = SQLString & " TipiImbarcazioni ON FlottaCharter.IdTipoImbarcazione = TipiImbarcazioni.IdTipoImbarcazione LEFT OUTER JOIN"
       SQLString = SQLString & " tabListini ON FlottaCharter.CodiceBarca = tabListini.CodiceBarca LEFT OUTER JOIN"
       SQLString = SQLString & " BasiCharter ON tabListini.CodiceBase = BasiCharter.CodiceBase LEFT OUTER JOIN"
       SQLString = SQLString & " LineeCharter ON tabListini.CodiceLinea = LineeCharter.CodiceLinea LEFT OUTER JOIN"
       SQLString = SQLString & " Armatori ON LineeCharter.IdArmatore = Armatori.IdArmatore) BoatsList"
       If FilterOptions <> "" Then SQLString = SQLString & " WHERE " & FilterOptions
       If SortOptions <> "" Then SQLString = SQLString & " ORDER BY " & SortOptions
       Set GetBoatsList = New ADODB.Recordset
       GetBoatsList.CursorLocation = adUseClient
       GetBoatsList.Open SQLString, mDBConnection, adOpenStatic, adLockReadOnly
       If GetBoatsList.RecordCount > 0 Then
          If PageSize > 0 Then
             GetBoatsList.PageSize = PageSize
             GetBoatsList.AbsolutePage = PagePointer
          End If
       End If
    End Function
    Le tabelle importanti sono FlottaCharter e tabListini.
    FlottaChater è una tabella con tutti i campi di una barca(nome,modello ecc). tabListini invece collega una barca a una base e a un listino.
    La parte che dovrei cambiare è quella che si ritorna a "Listini" che dovrebbe svolgere una nuova funzione, "Preview" va bene così.

    Mi ripeto: vorrei che se un'imbarcazione ha un un listino questo venga evidenziato, e per questo la parte da cambiare nella funzione sarebbe:
    codice:
    SQLString = SQLString & "'Listino trovato, codice ID listino: ' + STR(tabListini.ID) AS Listini,"
    Se invece quella barca non ha nessun listino, si dovrebbe optare per:
    codice:
    SQLString = SQLString & "'Listino non trovato' AS Listini,"
    Ho provato con quell' If per far andare uno di questi due "pezzi" di codice, ma si fissa solo con uno dei due e produce un'output sbagliato

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    24
    In pratica il valore di Listino dovrebbe poter cambiare a seconda dei casi, non è una cosa che ho già sul database.

    Es per capire meglio:

    Quando ho una barca che ha ID 233 della sua tabella [FlottaCharter] e in un'altra tabella [tabListino] la stessa barca con campo "codiceBarca" 233 possiede un listino (quindi ci sarà un ID di tabListino che corrisponde all'ID 233 della tabella precedente) devo passare a Listino il valore "ok questa barca ha un listino"
    Se invece esiste una barca con ID 402 ma nella tabella [tabListino] non c'è nessun legame della barca 402 con un listino, devo passare il valore "alla seguente barca non corrisponde un listino"

    E' possibile farlo? Potrei creare una codizione sulla query per entrambi i casi?



    Un'immagine meglio di 1000 parole

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.