Mitt problem är följande Nu har jag kliat mig en stund i skallen och har ett första förslag på vad som kan hjälpa dig. Ersätt , med . innan det skrivs till databasen, exempelvis:Problem med precisionen i odbc
Språk VB.net
Jag ska konvertera en databas för en kund till en annan databas.
Jag kopplar upp mig mot en ODBC (AcuOdbc 4.2.0) till detta använder jag mig av Microsoft.Data.Odbc.
Jag lyckas att hämta informationen från artikeldatabas som jag vill ha men alla decimal tal som ex. 6,57 görs om till heltal så jag får ut resultatet 6. Jag antar att man kan sätta kolumn precisionen som ska retuneras men kan inte hitta hur man gör.
När jag använder GetType.ToString på dBaseDataReader (se koden nedan) så är värdet jag får från det tänkta kolumnen, att det är double.
När jag använder Microsoft visual studio.nets "Server explorer --> ACUODBC ->AREG ->TablesRetrive data from table" skapas en som tabell visar det riktiga värdet i kolumnen ex. 6,57.
Jag har försökt att använda mig av Microsofts autogenererade OdbcConnection och OdbcDataAdapter men får bara sql error i data adaptern.
Har även försökt att använda mig av OdbcDataAdapter i min kod istället för OdbcDataReader men inte fått det att fungera.
Andra försök jag har gjort är att använda mig av oledb i stället för odbc men får då att providern inte stöds, har då testat andra provider men har inte hittat någon som fungerar förutom MSDASQL.1 som jag använder i koden nedan.
Jag kanske inte behöver tillägga att jag är nybörjare på det här med att programmera mot databaser.
Har varit i kontakt med AcuCorp som har gjort Odbc'n men de hjälper ingen om man inte har ett serviceavtal med dem och det har jag inte(ännu, den är väldigt dyr). Det hjälper tyvärr inte att min kund använder sig av deras produkter.
Har sökt information på Internet(Google) postat frågan i olika forum men kammat noll.
Databasens fil format är Artikel.001 Artikel.002 där prefixet motsvarar ett företag, den använder sig också av ändelsen .xfd. Här är information som jag hittade på The File Extension Sourcehttp://filext.com/detaillist.php?extdetail=XFD om .xfd
"Acu4GL Extended File Description
Acu4GL allows an ACUCOBOL-GT program to access a Relational Database Management System (RDBMS). The COBOL program is written to use ISAM file access. Acu4GL generates Structured Query Language (SQL) dynamically and uses the RDBMS to access the data. XFD files serve to do file and data mapping."
Här är koden som jag använder för att läsa in värdet från databasen.
Odbc är en AcuOdbc 4.2.0 och jag använder DNS koppling. Providern
MSDASQL vet jag inte så mycket om.
'****************************************************************
Imports Microsoft.Data.Odbc
Dim Getdata(50) As String
Dim Connectionstring as String ="Provider=MSDASQL.1;DSN=Bygggt001"
Dim Sql As String ="SELECT * FROM AREG WHERE (UPPDAT>'20040000')"
Dim dBaseConnection As New
Microsoft.Data.Odbc.OdbcConnection(Connectionstring)
dBaseConnection.Open()
Dim dBaseCommand As New Microsoft.Data.Odbc.OdbcCommand(Sql,dBaseConnection)
Dim dBaseDataReader As Microsoft.Data.Odbc.OdbcDataReader =_
dBaseCommand.ExecuteReader CommandBehavior.Sequent ialAccess)
System.Windows.Forms.Application.DoEvents()
While dBaseDataReader.Read
System.Windows.Forms.Application.DoEvents()
For i = 0 To dBaseDataReader.FieldCount - 1
Getdata(i) = dBaseDataReader(i)
Next
End While
'************************************************************
Mvh NiklasRydén
Sv: Problem med precisionen i odbc
<code>
Getdata(i) = Replace(dBaseDataReader(i), ",",".")
</code>