Information générale
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Network:
Windows 2003 Server
>Are you saying that when you create the VFP remote view and select BLOB as the data type, the view instead creates a general field type when you run the query?
>
I can use FlameRobin to view the structure of the original database. It is a blob. What I know is that it does contain binary data collected from a measurement system: all 8-bit A/D values.
I create an ODBC data source using a Firebird driver.
In VFP, CREATE SQL VIEW, etc. The Select statement in that view just selects that field.
I know know in the resulting view, that field is identified in VFP as General.
Jim
>
>>>Where do you get the error? In the substr() loop?
>>>
>>>Also, have you tried assigning the blob to a variable and referencing the var in the substr()?
>>>
>>>Gary
>>
>>Gary,
>>
>>If I try assigning BlobData to a local variable, I get an error saying that the operation is not valid for a General field.
>>
>>So BlobData is a general field, not a blob.
>>
>>I assume that the blob data is in that general field. How do I get it out into a byte array?
>>
>>Thanks,
>>Jim
>>
>>>
>>>>>>>>>>>How to copy the contents of a blob field in a table into an array of bytes.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>VFP doesn't have byte data type. Please clarify.
>>>>>>>>>
>>>>>>>>>It does *sortof*. I've defined arrays as byte (DIME aTest[100] as BYTE, aTest = 'X') to pass to COM servers and they are recognized as VT_UI1. TYPE() in VFP returns 'N'. I guess it depends on what the array is to be used for.
>>>>>>>>
>>>>>>>>
>>>>>>>>Sergey & Gary,
>>>>>>>>
>>>>>>>>Thanks for responding to my posting.
>>>>>>>>
>>>>>>>>Actually, my purpose has to do with COM. I'm developing a COM server. The client will pass a reference (pointer) to a byte array to the COM sever. The COM server will transfer the data from the blob field into the byte array.
>>>>>>>>
>>>>>>>>So, how, in my VFP COM server can I transfer the data from the blob into the byte array?
>>>>>>>>
>>>>>>>>Looks like VFP Dimension statement knows about the Byte data type, by the CAST function does not.
>>>>>>>>
>>>>>>>>Thanks,
>>>>>>>>Jim
>>>>>>>
>>>>>>>
>>>>>>>Does something like the following work?
>>>>>>>
>>>>>>>DIME MyPassedArray[LEN(MyBlob)]
>>>>>>>
>>>>>>>FOR nInc = 1 TO LEN(MyBlob)
>>>>>>> MyPassedArray[nInc]=SUBSTR(MyBlob,nInc,1)
>>>>>>>ENDFOR
>>>>>>
>>>>>>Gary,
>>>>>>I just got to try your suggestion. The blob field is part of a view. When I try the code you suggest:
>>>>>>
>>>>>> FOR nIx = 1 TO nBlobSize
>>>>>> nBlobData[nIx] = SUBSTR(BlobData, nIx, 1)
>>>>>> ENDFOR
>>>>>>
>>>>>>Where, BlobData is the name of the blob field in the view. I get the following error message:
>>>>>>
>>>>>> Function argument value, type, or count is invalid
>>>>>>
>>>>>>I get the sam error if I use vMyView.BlobData as the first argument.
>>>>>>Again, thanks for your suggestions.
>>>>>>Jim
>>>>>
>>>>>What is the type of the BlobData field?
>>>>
>>>>Naomi,
>>>>It is a blob in the original database from which I create the view. BlobData is the name of the field in the VFP view. VARTYPE(BlobData) returns "G". Does that mean that it is no longer a blob?
>>>>In any case, I am trying to get the binary data out of that blob field.
>>>>In the view, I just changed the field to say CAST(myBlobField AS BLOB) AS BlobData.But, VARTYPE(BlobData) still returns "G:
>>>>
>>>>The original database is Firebird.I use a VFP parametrized view to get a specific record in the table, and now want to get the blob field in that record.
>>>>
>>>>Hmmm
>>>>
>>>>Jim
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement