+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Problem mit Bildern (lo) / VB

  1. #1
    mrmercury ist offline Neuer Benutzer
    Registriert seit
    19.01.2010
    Beiträge
    9

    Standard Problem mit Bildern (lo) / VB

    Hallo liebe Community,

    Ich habe ein kleines Problemchen und versuche es mal so detailiert wie möglich zu schildern und ich hoffe jemand kann mir helfen.

    Erstmal einpaar fact´s:

    Was tut der Programmteil?
    Erstellen von druckbaren Berichten mit Bildinhalt

    - Bisher PostgreSQL 8.0 DB + ODBC Treiber 8.0 - KEINE PROBLEME
    - PostgreSQL 8.4 DB + ODBC Treiber 8.4 - PROBLEME
    - PostgeSQL 8.4 DB + ODBC Treiber 8.0 - KEINE PROBLEME

    Kann es sein das sich irgendwie die syntax für large objects geändert hat?

    Wie gesagt, unter 8.0 hat alles wunderbar funktioniert, hier ein Codeausschnitt aus dem Visual Basic Projekt.

    Vielen Dank schonmal!

    Code:
    Function ADO_Fetch_Picture_FOR_PRINT(Adress_ID As Long, Optional Wund_Nr As Long, Optional LoescheFiles As Boolean) As String
    On Error GoTo ADO_Fetch_Picture_FOR_PRINT_Error
       
    
       ' Fetch the first record present in MYTABLE with a lo object stored
       Dim SQL            As String
       Dim rs             As New ADODB.Recordset
       Dim fd             As Integer
       Dim flen           As Long
       Dim chunk()        As Byte
       Dim sngAspectRatio As Single
       Dim sngWidth       As Single
       Dim sngHeight      As Single
       Dim sngPosX        As Single
       Dim sngPosY        As Single
       Dim stdPic         As StdPicture
       Dim TempPath_DokuCare As String
       Dim HTML           As String
       
      
    
       ADO_Fetch_Picture_FOR_PRINT = ""
       
       TempPath_DokuCare = GetTempDir()    'Temp-Path einlesen
       
       If tmpZaehler = 0 Then
          tmpZaehler = 1
       End If
       
       If LoescheFiles = True Then
          Call Loesche_TMP_Files
       End If
       
       If Wund_Nr > 0 Then
          SQL = "select * from t_grafik where adress_id = " + Trim(Adress_ID) + " and grafikart_id = 2 and wund_nr = " + Trim(Wund_Nr) + " order by wund_nr, lupd "
       Else
          SQL = "select * from t_grafik where adress_id = " + Trim(Adress_ID) + " and grafikart_id = 2 order by wund_nr, lupd "
       End If
       Call rs.Open(SQL, db, adOpenDynamic, adLockOptimistic)
    
       If rs.BOF Then
          rs.Close
          Exit Function
       End If
       
       rs.MoveLast
       rs.MoveFirst
       
       Do While Not rs.EOF
       
          
          HTML = HTML + " <table border='0' width='100%' id='BildBewohner' > "
          
          ' Get the len of the stored object
          flen = rs!image.ActualSize
       
          ' Initialize the file where to store the blob
          fd = FreeFile
          Open TempPath_DokuCare + "\Nr" + Trim(tmpZaehler) + ".tnp" For Binary Access Write As fd
          
          ReDim chunk(1 To flen)
       
          ' Get it from the database
          chunk() = rs!image.GetChunk(flen)
          ' ... and store in the file
          Put fd, , chunk()
          
       
             HTML = HTML + " <tr>"
             HTML = HTML + "       <td width='70%' valign='top' > "
                HTML = HTML + " &nbsp   </td>"
             HTML = HTML + " </tr>"
             
       
             HTML = HTML + " <tr>"
             HTML = HTML + "       <td width='70%' valign='top' > "
                HTML = HTML + "  Wund-Nr:    " + Trim(rs.Fields("wund_nr")) + ";       " + "  Wunddatum:    " + Trim(rs.Fields("wann")) + ";       " + "  Wundbeschreibung:    " + Trim(rs.Fields("grafik_text")) + " </td>"
             HTML = HTML + " </tr>"
             
             HTML = HTML + " <tr>"
             HTML = HTML + "       <td width='70%' valign='top' > "
                HTML = HTML + "       <img border='0' src='" + Trim(TempPath_DokuCare) + "\Nr" + Trim(tmpZaehler) + ".tnp'  height='300' align='left'></td> "
             HTML = HTML + " </tr>"
       
          Close #fd
          HTML = HTML + " </table> "
          
          tmpZaehler = tmpZaehler + 1
          rs.MoveNext
       
       Loop
       
       ADO_Fetch_Picture_FOR_PRINT = HTML
       
       
       Exit Function
       
    ADO_Fetch_Picture_FOR_PRINT_Error:
       
       ADO_Fetch_Picture_FOR_PRINT = ""
       
       Call error_handler(Err, "ADO_Fetch_Picture_FOR_PRINT", True)
       
       Set stdPic = Nothing
       
       Exit Function
       
       Resume
       
    End Function
    
    Geändert von mrmercury (19.01.2010 um 10:27 Uhr)

  2. #2
    Avatar von progs
    progs ist offline Super-Moderator
    Registriert seit
    26.11.2005
    Ort
    Kulmbach, Bayern, Germany, 108121049209415, Kulmbach
    Beiträge
    184

    Standard

    Und was ist jetzt genau das Problem? Wo tritt ein Fehler auf und welche Fehlermeldung erscheint?

  3. #3
    mrmercury ist offline Neuer Benutzer
    Registriert seit
    19.01.2010
    Beiträge
    9

    Standard

    oh sorry for lauter Fehlerbeschreibung den Fehler vergessen ...

    also ich bekomm ne Fehlermeldung vom Programm beim generieren des Berichtes.
    Beim Debugen hab ich festgestellt das er nach nach
    Code:
    ReDim chunk(1 to flen)
    
    in den Error Handler springt ... flen is hierbei komischerweise "0"
    zuvor wird ja flen bestimmt aus
    Code:
    flen = rs!image.ActualSize
    
    ... evtl is dort der Haase begraben?

    Ich versuche halt herauszufinden was postgresql 8.4 hier anderst macht als 8.0...

    Die eigentlich Fehlermeldung lautet "Index außerhalb des gültigen Bereichs in Funktion ADO_FETCH_PICTURE_FOR_PRINT", dann wird der Bericht generiert aber ohne das Bild welches es anzeigen soll...

    **UPDATE**

    also es liegt definits an dem
    Code:
    flen = rs!image.ActualSize
    
    habe das Programm nochmal laufen lassen mit PostgreSQL 8.0 und alle Werte/Parameter/Variablen sind Identisch zu beiden. Der Unterschied ist das flen unter 8.0 einen richtigen Wert ausgibt und nicht einfach nur "0". Aber wie fixe ich das? Is da die Syntax nun anderst?
    Geändert von mrmercury (19.01.2010 um 12:14 Uhr)

  4. #4
    mrmercury ist offline Neuer Benutzer
    Registriert seit
    19.01.2010
    Beiträge
    9

    Standard

    hat niemand eine idee die mich vielleicht weiterbringt ? ...

  5. #5
    ads
    ads ist offline Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    3.408

    Standard

    Was gibt es denn konkret aus und was möchtest du erreichen?

    Btw, läuft deine PostgreSQL Datenbank unter Windows?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #6
    mrmercury ist offline Neuer Benutzer
    Registriert seit
    19.01.2010
    Beiträge
    9

    Standard

    ich möchte einfach die alte Funktionalität wie sie mit 8.0 funktioniert hat.
    Ein blob (in dem fald eine Grafik) soll angezeigt werden in meinem Bericht.

    Mit 8.0 Ging das problemlos aber seit 8.4 kommt die besagte Fehlermeldung.

    Ja, der Server läuft unter Windows...

  7. #7
    ads
    ads ist offline Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    3.408

    Standard

    Gut, zuerst einmal: 8.0 unter Windows ist aufgrund diverser kritischer Fehler nicht mehr unterstützt.

    Dann: kannst du eingrenzen, bis wohin das gleich funktioniert? Wenn du die Anfragen auf der Konsole eingibst, gibt es das gleiche Ergebnis? Wenn ja, ist entweder im ODBC-Treiber etwas kaputt oder in deiner Anwendung.
    Wenn nicht: hast du den Fehler schon gefunden.

    Bisher versuchst du, ausgehend von deiner als richtig und funktionierend eingestuften Anwendung (was aber falsch sein kann) von oben über dem Problem zu kreisen. Da drunter gibt es aber diverse Komponenten, die ausgetauscht wurden und die allesamt für den Fehler verantwortlich sein können.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  8. #8
    mrmercury ist offline Neuer Benutzer
    Registriert seit
    19.01.2010
    Beiträge
    9

    Standard

    es funktioniert alles identisch bis auf die stelle wo die "flen" berechnet wird aus "rs!image.GetActualSize".
    Dort wird eine 0 für flen zurückgegeben und nicht (wie in 8.0) die richtige grösse des Blobs...


    hoffe ich hab deine frage richtig verstanden und das geantwortet was du hören wolltest :P ...

  9. #9
    ads
    ads ist offline Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    3.408

    Standard

    Zitat Zitat von mrmercury Beitrag anzeigen
    es funktioniert alles identisch bis auf die stelle wo die "flen" berechnet wird aus "rs!image.GetActualSize".
    Dort wird eine 0 für flen zurückgegeben und nicht (wie in 8.0) die richtige grösse des Blobs...
    Nun, was genau macht diese Stelle? Bisher sehe ich nur deinen Funktionscode, man kann aber nicht sehen, ob und wie dort irgendwelche Datenbankaktionen ausgeführt werden.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  10. #10
    mrmercury ist offline Neuer Benutzer
    Registriert seit
    19.01.2010
    Beiträge
    9

    Standard

    nunja, Datenbanktechnisch wird ja das SQL statement abgesetzt wie du aus dem oben codeausschnitt sehen kannst.
    Beide SQL Statements sind gültig und im Debug-Direkfenster bekomme ich ein gültiges SQL Statement für 8.0 und 8.4 raus.
    Ich sehe auch dass die Datenbankverbindung in beiden Fällen korrekt ist und das die db aufgemacht wird.

    Was nun das rs!getActualSize genau macht kann ich dir nicht sagen da es eine vorgefertigte Funktion ist die zum ADO Teil gehört.
    Ich finde einfach keinen Hinweis darauf warum er mir keine Feldlänge für mein Blob zurückgibt weil da liegt der haase begraben. Die Fehlermeldung kommt ja nur deswegen weil er mit der "0" als "flen" nichts anfangen kann.

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum